当我尝试从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...'.
P.S代码只是说明错误消息的问题。请不要认真对待。
答案 0 :(得分:1)
将Car.cs移动到独立的类库或转换为Web应用程序项目可以避免错误。我想这是VS2015的一个错误,它没有在IDE中正确引用已编译的App_Code二进制文件。
答案 1 :(得分:0)
你的uc属性应该有字符串类型。使用carName而不是Car。