Return 从 VS 环境的用户控件中键入

Return Type from User Control of VS Environments

我在 Visual Studio 2015 年收到一条烦人的消息,当时我试图从 ASCX 控件中获取一些实例。有人可以给我建议吗?

步骤 1. 创建 WebForm 项目,.NET 4.6。

第 2 步。在 App_Code 文件夹中构建 Car.cs。

namespace MyTest
{
    public class Car
    {
        public string name { get; set; }
    }
}

步骤 3. 在根路径中构建 People.ascx。

<%@ Control Language="C#" %>
<script runat="server">
    private MyTest.Car _Car = new MyTest.Car();
    public MyTest.Car oCar
    {
        get { return _Car; }
    }
    public string carName
    {
        set
        {
            _Car.name = value;
        }
        get
        {
            return _Car.name;
        }
    }
    public string peopleName { set; get; }
    public void Page_Load(Object sender, EventArgs args)
    {
        ascxMsg.Text = peopleName + " driving " + carName;
    }
</script>
<asp:Literal ID="ascxMsg" runat="server" />

步骤 4. 在根路径中构建 WebForm1.aspx。

<%@ Page Language="C#" %>
<%@ Register Src="People.ascx" TagPrefix="foo" TagName="boo" %>

<script runat="server">
    public void Page_Load(Object sender, EventArgs args)
    {
        testing.peopleName = "John";
        testing.carName = "BMW";

        MyTest.Car oTempCar = testing.oCar;
        msg.Text = oTempCar.name;
    }

</script>


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
            <foo:boo id="testing" runat="server" /><br />
            <asp:literal id="msg" runat="server" />
    </div>
    </form>
</body>
</html>

一切都非常完美,浏览器显示:

John driving BMW
BMW 

**但是...我的 VS 2015 上继续显示一些烦人的消息,红色下划线显示:**

The type 'Car' is defined in an assembly that is not referenced. You must add a reference to assembly 'App_Code.brabra...'.

P.S 这些代码只是演示错误消息的问题。请不要当真。

您的 uc 属性应该是字符串类型。使用 carName 而不是 Car。

将Car.cs移动到独立的class库或转换为网络应用程序项目可以避免错误。我猜这是 VS2015 的一个错误,它没有在 IDE.

中正确引用编译的 App_Code 二进制文件