从VS环境的用户控制返回类型

时间:2015-09-22 04:00:18

标签: c# asp.net webforms visual-studio-2015

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

步骤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...'.

How to remove the Red underline?

P.S代码只是说明错误消息的问题。请不要认真对待。

2 个答案:

答案 0 :(得分:1)

将Car.cs移动到独立的类库或转换为Web应用程序项目可以避免错误。我想这是VS2015的一个错误,它没有在IDE中正确引用已编译的App_Code二进制文件。

答案 1 :(得分:0)

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