繁体   English   中英

为什么在后面的代码中创建的对象在aspx页面中不可用?

[英]why an object created in the code behind is not available in the aspx page?

我有一个简单的问题。 当我们在后面的代码中创建一个对象(“.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%>

现在当我创建一个对象时,让我们在后面的代码中说“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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM