0

我有一个简单的问题。当我们在后面的代码(“.aspx.cs”)中创建对象时,为什么在aspx页面中不可用。

例如,如果我有一个类(存在于另一个 .cs 文件中,而不是在后面的代码中)并且在该类中我声明了一个属性,让我们说“名称”。

namespace BLL.SO
{
    public class SOPriceList
    {
        private string _name;
        public string Name
        {
            get { return _name;}
            set { _name = value; }
        }
    }
}

现在,当我创建一个对象时,让我们在后面的代码中说“obj”(“.aspx.cs”),范围在部分类中。

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%>
4

1 回答 1

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();
}
于 2012-05-24T07:29:40.320 回答