簡體   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