为什么在代码隐藏中创建的对象在 ASPX 页中不可用
本文关键字:ASPX 代码 隐藏 创建 为什么 对象 | 更新日期: 2023-09-27 18:35:06
我有一个简单的问题。当我们在代码隐藏(".aspx.cs")中创建对象时,为什么它在aspx页中不可用。
例如,如果我有一个类(存在于另一个.cs文件中,而不是在代码隐藏中),并且在该类中我声明了一个属性,让我们说"Name"。
namespace BLL.SO
{
public class SOPriceList
{
private string _name;
public string Name
{
get { return _name;}
set { _name = value; }
}
}
}
现在,当我创建一个对象时,让我们在代码 back(".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%>
现在,当我创建一个对象时,让我们在代码中说"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();
}