[英]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.