免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
asp.net 同一個(gè)頁面中如何保持變量的值在多個(gè)事件中變換???
牛腩新聞發(fā)布系統(tǒng)進(jìn)行到尾聲,因?yàn)殚_始就和視頻講師講解牛腩新聞系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu),編程命名等一些細(xì)節(jié)不一樣,所以越是到后期,越有點(diǎn)吃力,跟著視頻做系統(tǒng)的時(shí)候,出現(xiàn)了好多問題,不是文件找不到,就是變量,對象使用不正確,都得一一查來,在跟自己的命名比對,明顯慢了好多,但是還是有利有弊的,在發(fā)現(xiàn)問題,解決問題的同時(shí),也知道了很多,所以學(xué)習(xí)是成正比的。

先看看我的問題吧。進(jìn)行“修改牛腩系統(tǒng)新聞”模塊時(shí),新聞這個(gè)表中的字段(新聞?lì)悇e,新聞標(biāo)號,新聞標(biāo)題,新聞內(nèi)容)除了新聞標(biāo)號不可以修改,其他都是可以更改的。修改新聞界面如下:


頁面上缺少新聞標(biāo)號,我們要進(jìn)行新聞修改是,要根據(jù)新聞標(biāo)號進(jìn)行修改,怎么辦?

我們可以從新聞列表頁跳轉(zhuǎn)過來的時(shí)候,就把“新聞標(biāo)號”賦值給一個(gè)全局變量。

思路:在form 中定義了一個(gè)全局變量,

//全局變量,新聞標(biāo)號       //string newsid;
在頁面load中給變量賦值:    
 protected void Page_Load(object sender, EventArgs e)        {			//給變量賦值                    newsid = dtNews.Rows[0][0].ToString();                               }

在“修改新聞”事件中調(diào)用:

protected void btnupdate_Click(object sender, EventArgs e)       {		updateflag = new NewsManage().Update(newsid);	}

結(jié)果發(fā)現(xiàn):加載的時(shí)候newid的值確實(shí)被賦值了,但是但我們再次觸發(fā)“修改新聞”按鈕時(shí),頁面刷新,newsid的值消失了,所以,我們單純的使用全局變量達(dá)不到我們的目的。

那我們只好換方法了。我們可以通過以下四種來實(shí)現(xiàn)。

第一種:將全局變量換成“Static”。

//靜態(tài)變量,新聞標(biāo)號       //static string newsid;

接下來的復(fù)制,調(diào)用,同上。

第二種:使用viewstatic。

首先:什么是viewstatic?

ViewState是ASP.NET中用來保存WEB控件回傳時(shí)狀態(tài)值一種機(jī)制。在WEB窗體(FORM)的設(shè)置為runat="server",這個(gè)窗體(FORM)會被附加一個(gè)隱藏的屬性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的狀態(tài)值。

ViewState是類Control中的一個(gè)域,其他所有控件通過繼承Control來獲得了ViewState功能。它的類型是system.Web.UI.StateBag,一個(gè)名稱/值的對象集合。當(dāng)請求某個(gè)頁面時(shí),ASP.NET把所有控件的狀態(tài)序列化成一個(gè)字符串,然后做為窗體的隱藏屬性送到客戶端。當(dāng)客戶端把頁面回傳時(shí),ASP.NET分析回傳的窗體屬性,并賦給控件對應(yīng)的值。

使用:1、不需要在form 中定義變量:在頁面load中給變量賦值:      

 protected void Page_Load(object sender, EventArgs e)        {	//第二種:頁面級的變量,只要頁面不消失,就存在                    //ViewState["newsid"] = dtNews.Rows[0][0].ToString(); 	                              }

2、調(diào)用:
protected void btnupdate_Click(object sender, EventArgs e)       {		Newsid = ViewState["newsid"].ToString();					updateflag = new NewsManage().Update(Newsid);}

第三種:使用session。

與第二種viewstate的使用是一樣的。只是把viewstate換成session即可。

第四種:使用asp.net 隱藏屬性:hiddenfield。

1、要在前臺頁面中定義hiddenfield屬性。

<!--隱藏屬性-->        <asp:HiddenField ID="newsid" Value ="" runat="server" />

2、在后臺頁面中復(fù)制:

 protected void Page_Load(object sender, EventArgs e)        {	//第四種:使用屬性:在前臺頁面中定義         newsid.Value = dtNews.Rows[0][0].ToString();                             }

3、調(diào)用:

protected void btnupdate_Click(object sender, EventArgs e)       {		Newsid = newsid.Value ;					updateflag = new NewsManage().Update(Newsid);}

以上方法都可以使用成功,第四種的隱藏屬性不經(jīng)常使用。

Viewstate和Session的使用區(qū)別:簡單點(diǎn)說,session值是保存在服務(wù)器內(nèi)存上,那么,可以肯定,大量的使用session將導(dǎo)致服務(wù)器負(fù)擔(dān)加重.而viewstate由于只是將數(shù)據(jù)存入到頁面隱藏控件里,不再占用服務(wù)器資源,因此,我們可以將一些需要服務(wù)器"記住"的變量和對象保存到viewstate里面.而sesson則只應(yīng)該應(yīng)用在需要跨頁面且與每個(gè)訪問用戶相關(guān)的變量和對象存儲上.另外,session在默認(rèn)情況下20分鐘就過期,而viewstate則永遠(yuǎn)不會過期.

但viewstate并不是能存儲所有的.net類型數(shù)據(jù),它僅僅支持String、Integer、Boolean、Array、ArrayList、Hashtable以及自定義的一些類型.

發(fā)現(xiàn)只要下決心,解決一個(gè)問題,總會有藏不住的方法。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
asp.net ajax技巧--模板面操作內(nèi)容頁面
asp.net2.0 hiddenfield控件_asp.net技巧-NET編程
ASP.NET 高級編程基礎(chǔ)第三篇—ViewState
IsPostBack原理
ASP.NET學(xué)習(xí)筆記 ---系統(tǒng)對象與狀態(tài)管理大全
Asp.net頁面之間的傳值 - Study
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服