在Page_Load中已經賦值的變數,怎么到了button_Click,又取不到值了?
public partial class Test : Web.SitePage
{
public int circleID;
protected void Page_Load(object sender, System.EventArgs e)
{
circleID = 6;
}
protected void bbt_Click(object sender, EventArgs e)
{
int testID = circleID;
}
}
結果提示 testID結果為null,怎么才能取到 circleID的值?
uj5u.com熱心網友回復:
這是網頁 你load的時候是個實體。然后你網頁點擊的時候是會產生一個新的實體。加個static就好了uj5u.com熱心網友回復:
protected void Page_Load(object sender, System.EventArgs e)
{
if(!ispostpaback){
circleID = 6;
}
}
uj5u.com熱心網友回復:
static靜態的,不變的,而我需要在Page_Load中修改這個變數的值。uj5u.com熱心網友回復:
你確定得不到?
int testID = circleID;
Response.Write(testID);
const跟static readonly才是只讀不變的。。static修飾的欄位方法,代表不用實體化類就能直接被呼叫,你這個是網頁,除非要共用這個值,才用static,有個用戶更改了這個值,另外個用戶得到的值也將得到這個值
uj5u.com熱心網友回復:
我第一反應,也是#2描述的。你試試吧
if(!ispostpaback){
circleID = 6;
}
uj5u.com熱心網友回復:
頁面上用 aotopost=true runat=server最好放在session里,而不是page的成員變數
uj5u.com熱心網友回復:
加staticuj5u.com熱心網友回復:
你確定獲取不到?把你的場景描述清楚吧,就你給的代碼,button_click里面輸出沒問題的。uj5u.com熱心網友回復:
這種古老的“web服務器端頁面開發”其每一次頁面回發處理,其實都是一個全新的應用被啟動。要想跨 Request 程序訪問頁面資料,應該使用 ViewState 框架機制。uj5u.com熱心網友回復:
使用 Session 集合是不合適的,ViewState 是針對頁面應用區域資料保存的,而 Session 是針對網站各個頁面應用全域的。uj5u.com熱心網友回復:
隨便(大致)寫一下吧,這類代碼我們10幾年不寫了:private int _circleID;
public int circleID
{
get{
var v= ViewState["cID"];
return v==null?0:(int)v;
}
set{
ViewState["cID"] = value;
}
}
asp.net 即使發展再強勁,它的技術也就停留在2006 年哪個時間段。從 2013年以后 web 前端逐步發展為一個非常龐大、包羅萬象的技術。建議學好現代的前端技術,它跟 c#、java、php甚至 python 等都毫無關系。其中微軟的 typescript 作為前端技術最底層的通用基礎,有點兒作用。
uj5u.com熱心網友回復:
看下WebPage的生命周期吧,好像Post回來的頁面不運行Load事件的。uj5u.com熱心網友回復:
我看了你的代碼沒問題啊,輸出是正常的,你怎么會輸出null你, 頁面每個按鈕都會重新賦值的。 無論加不加ispostpaback都應該沒問題啊。我試了2回,除錯輸出都沒問題的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/9872.html
標籤:ASP.NET
上一篇:一個datagridview輸入另一個datagridview顯示
下一篇:串口通訊的實時性問題
