我有一个简单的问题。当我们在后面的代码中创建一个对象(“.aspx.cs”)时,为什么它在aspx页面中不可用。
例如,如果我有一个类(存在于另一个.cs文件而不是后面的代码中)并且在该类中我声明了一个属性,那么就说“名称”。
namespace BLL.SO
{
public class SOPriceList
{
private string _name;
public string Name
{
get { return _name;}
set { _name = value; }
}
}
}
现在当我创建一个对象时,让我们在后面的代码(“.aspx.cs”)中说“obj”,并在范围内使用范围。
namespace Modules.SO
{
public partial class PriceListRecordView : PageBase
{
SOPriceList obj = new SOPriceList();
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
使用此对象“obj”我可以访问该属性。那么为什么我不能使用相同的对象“obj”以这种方式获取aspx页面中的属性,
<%= obj.Name%>
答案 0 :(得分:2)
现在,当我创建一个对象时,让我们在代码中说“obj” 在后面(“.aspx.cs”),使用这个对象“obj”我可以访问属性
目前尚不清楚您是如何创建此obj
实例的。如果它背后的代码中的方法中有一些局部变量,很明显这个变量的范围本身就是方法,所以你不能在ASPX页面中访问它。
在ASPX页面中,您只能访问后面代码中定义的当前WebForm的成员。所以这个obj
必须在某处实例化。例如,您可以在代码中包含一个属性:
protected SomeType MyObj
{
get
{
return ... some instance
}
}
然后在ASPX页面中可以访问它:
<%= MyObj.Name %>
让我们再举一个例子,它允许你初始化属性,例如在Page_Load
事件中:
protected SomeType MyObj { get; private set; }
protected void Page_Load(object sender, EventArgs e)
{
MyObj = new SomeType();
}