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 二进制文件
我在 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 二进制文件