我想創建我的「定製的IsPostBack」,我所做的就是創建一個布爾值屬性,的IsPostBack定製
bool test;
public bool MyPostBack
{
get{ test = Page.IsPostBack; return test; }
set{ test = value; }
}
調試時,將其具有,例如,值設置爲false,當測試爲真,後按F11,測試保持原樣!我覺得這很奇怪。你有什麼想法,爲什麼?謝謝。
我想創建我的「定製的IsPostBack」,我所做的就是創建一個布爾值屬性,的IsPostBack定製
bool test;
public bool MyPostBack
{
get{ test = Page.IsPostBack; return test; }
set{ test = value; }
}
調試時,將其具有,例如,值設置爲false,當測試爲真,後按F11,測試保持原樣!我覺得這很奇怪。你有什麼想法,爲什麼?謝謝。
你的屬性的getter做的第一件事就是正在重置它:
test = Page.IsPostBack;
所以,因爲該值設定要被重寫你每次設置你的MyPostBack屬性將也基本沒有影響得到的財產價值。
你可能想要更多的東西是這樣的:
bool test;
public bool MyPostBack
{
get{ return test; }
set{ test = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
MyPostBack = Page.IsPostBack;
}
私有變量(測試)的頁面加載事件被初始化頁面的IsPostBack屬性的值。
問題是,在調試過程中,當逐步瀏覽代碼時,var test沒有正確設置!我會試試這個,非常感謝你 – test 2011-12-29 15:15:28
對!變量初始值設定項會在頁面生命週期中過早地設置該值。當變量初始化器執行時,Page.IsPostBack設置不正確。您需要在Page_Load事件中設置測試變量。我已經更新了我的答案以反映這一點。 – 2011-12-29 19:48:03
每當您閱讀酒店時,您的獲得者都將該字段重置爲原始的Page.IsPostBack
。
好了,現在我明白了,謝謝每一位,因爲我的代碼中存在錯誤,當我在調試期間調試並嘗試更改其值時,它也被重置!這解決了我的問題,現在我已經完成了我的第一個電子商務網站:)謝謝大家! – test 2011-12-29 15:20:56
我想提出另一種方法來做到這一點。 最有可能,你想保持這個會話,這樣你就可以做到以下幾點:
public bool MyPostBack
{
get
{
if (Session["MyPostBack"] == null)
Session["MyPostBack"] = Page.IsPostBack;
return (bool)Session["MyPostBack"];
}
set
{
Session["MyPostBack"] = value;
}
}
這樣,MyPostBack總是會返回一個有效的值,即使你沒有初始化。它將在Page_Load之前(例如在Page_Init中)可用。
我也認爲最好不要爲它設置setter,但在getter中有更多的計算。否則,根據我的經驗,如果在超過一種或兩種情況下設置其值時,代碼可能變得不可讀,且不易維護。
您需要調用'MyPostBack'來更改'test'。 – 2011-12-29 15:09:50
你的意思是我需要做的:set {MyPostBack = value;} – test 2011-12-29 15:11:10
你想要做什麼? – SLaks 2011-12-29 15:11:19