亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

第二天

系統(tǒng) 2238 0

POSTBACK的問題:
Page的IsPostBack屬性用來解決此問題.由于Page_Load在每次頁面加載時(shí)運(yùn)行,其中的代碼即使在回送

(PostBack)的情況下也會(huì)執(zhí)行.這在一般情況下不需要或者不允許的.

頁面處理步驟:
1 服務(wù)器往返:
服務(wù)器負(fù)責(zé)動(dòng)態(tài)創(chuàng)建頁面并把頁面?zhèn)鬟f給客戶端.而客戶端負(fù)責(zé)給出信息和從用戶那里獲取信息,同時(shí)

有選擇的執(zhí)行某個(gè)客戶端腳本.在asp.net中將信息在服務(wù)器客戶端之間傳遞是依靠http請(qǐng)求實(shí)現(xiàn).
2 ViewState:
Web Forms的核心是無狀態(tài)的HTTP通信.這意味著服務(wù)器并不保留有關(guān)以前客戶請(qǐng)求的任何信息.這也

意味著每次在往返執(zhí)行的過程中重新創(chuàng)建頁面時(shí),服務(wù)器往往要做大量的額外工作,而web forms的做法是

使用ViewState. 頁面在服務(wù)器的兩次請(qǐng)求之間存貯自己的ViewState.ViewState包含了頁面上所有用戶

控件的狀態(tài).通過使用System.Web.UI.StateBag 對(duì)象,此信息被存貯成名稱-值對(duì).頁面中的viewstate被

存貯為隱藏的表單字段.
例如: <input type="hidden" name="_VIEWSTATE" value="......"/>
web forms讀取viewstate并將該頁面提交給服務(wù)器時(shí)恢復(fù)服務(wù)器控件的值.有點(diǎn)是頁面的狀態(tài)與頁面一

起存貯,而不是存貯在服務(wù)器中.缺點(diǎn)是在復(fù)雜的頁面中viewstate的內(nèi)容可能會(huì)增大以致開始影響頁面下

載的速度.
注:默認(rèn)情況下所有服務(wù)器控件都支持viewstate.當(dāng)然也可以將頁面級(jí)的viewstate關(guān)閉--不保存頁面的

任何控件的狀態(tài).實(shí)現(xiàn):
<%@ Page EnableViewState="false" %>
基于逐步控制的思想,對(duì)某個(gè)控件要想實(shí)現(xiàn)viewstate,可以這樣:
<asp:DropDownList id="ship" EnableViewState="false" runat="server"/>
3 頁面處理步驟
a.配置階段
如果是進(jìn)行回送操作,那么頁面和控件的viewstate隨后就會(huì)恢復(fù).恢復(fù)之后系統(tǒng)就會(huì)激發(fā)Page_Load

事件.
b. 事件處理階段
c.顯示階段
d.清除階段
此階段首先發(fā)生的事件是Page_Unload,應(yīng)該完成的工作有:關(guān)閉任何打開的數(shù)據(jù)庫連接,任何已打開

的文件以及刪除任何用于頁面的對(duì)象(大多情況下是對(duì)象引用).
4 web表單事件
和傳統(tǒng)事件驅(qū)動(dòng)編程模型中所使用的事件不同,盡管仍然可以使用在客戶端中出現(xiàn)并被處理的事件(

就像服務(wù)器中出現(xiàn)并被處理的事件一樣),但主要的web form 事件模型適用于出現(xiàn)在客戶端但在服務(wù)器中

進(jìn)行處理的事件.這種控制轉(zhuǎn)移是通過使用http post實(shí)現(xiàn)的.
事件出現(xiàn):
有幾個(gè)服務(wù)器控件如:Repeater,DataList和DataGrid這樣的控件都可以包含其它自控件.這些子控

件并不會(huì)主動(dòng)產(chǎn)生自己的事件以在頁面中進(jìn)行處理.實(shí)際情形是,容器(即父控件)將事件打包,并將其作為

ItemCommand事件傳遞到頁面中.因此在Repeater中單擊某個(gè)按鈕時(shí)就會(huì)激發(fā)該事件.
例如:
<script language="c#" runat="server">
void "MyRepeater"_ItemCommand(Object Sender,RepeaterCommandEventArgs e)
{
ClickInfo.Text = "You selected the"+((Button)e.CommandSource).Text+"button<br>";

}

</script>
注:第一個(gè)參數(shù)sender是對(duì)產(chǎn)生事件的服務(wù)器控件的引用.也就是說,根據(jù)sender變量的值可以知道具體是

哪個(gè)控件.
第二個(gè)參數(shù)是一個(gè)包含了一組有關(guān)特定事件的信息的對(duì)象.例中CommandSource屬性表示對(duì)實(shí)際產(chǎn)生事

件的子服務(wù)器控件的引用.
客戶端和服務(wù)器上的事件處理:
基本上,服務(wù)器控件所支持的事件都在服務(wù)器上處理.而所有可由html input控件都需要在客戶端上處

理.但是當(dāng)存在一個(gè)既能在服務(wù)器又能在客戶端處理的事件時(shí),該事件會(huì)優(yōu)先在服務(wù)器上執(zhí)行.
頁面狀態(tài):
除了隱藏的表單字段ViewState或者Session 對(duì)象中可以存貯信息,State Bag也是另一種選擇:
例如:
void Page_Load(Object Sender,EventArgs e)
{
int viewCount;
if(ViewState["viewCount"]!=null)
{
viewCount = (int) ViewState["viewCount"]+1;
}
else
viewCount = 1;

labelView1.Text = "Times page has been viewed"+viewCount.ToString();
ViewCount["viewCount"] = viewCount;
if(!IsPostBack)
{
ArrayList values = new ArrayList();
......
}
}
ViewState對(duì)象是一個(gè)由頁面維護(hù)的狀態(tài)集合.當(dāng)然可以將自己的關(guān)鍵字添加到該集合中,而且該值將和

所有服務(wù)器控件的狀態(tài)一起在頁面中保留下去.
下面是有關(guān)頁面指令的內(nèi)容:
1 @Page指令
主要屬性:
AspCompat 將頁面設(shè)置為在Single-thread Apartment(STA組件??) 中運(yùn)行.(不懂!!)
AutoEventWireup 頁面事件是否自動(dòng)激發(fā).若為false,則象page_load這樣的事件必須由開發(fā)人員激活
Buffer 激活響應(yīng)緩沖功能
ClassName 派生該頁面的類名稱
ClientTarget 頁面所指向的瀏覽器(有點(diǎn)不懂)
ContentType 設(shè)置響應(yīng)的內(nèi)容類型*
Debug 用激活的調(diào)試功能編譯頁面
Description 頁面的描述--asp.net將其忽略
EnableSessionState 頁面有權(quán)訪問Session對(duì)象,ReadOnly--頁面只能對(duì)Session對(duì)象執(zhí)行讀操作,不

能改變Session變量
EnableViewState 為服務(wù)器控件保持的頁面級(jí)ViewState(前面已就此問題分析過)
EnableViewStateMac 驗(yàn)證viewstate是否被客戶端竄改
ErrorPage 出現(xiàn)錯(cuò)誤時(shí)重定向頁面
Inherits 該頁面繼承的代碼后置類
Language 這個(gè)就不說了,地球人都知道....
ResponseEncoding 由響應(yīng)發(fā)送的文本的編碼格式
SmartNavigation 這個(gè)不太懂...
Src 該頁面所使用的代碼后置類的文件名稱
Trace 激活頁面執(zhí)行的追蹤(默認(rèn)false)
...
2 @Import 指令
用來導(dǎo)入一個(gè)名稱空間.
< %@Import namespace="value" %>
自動(dòng)導(dǎo)入的空間:
system system.web
system.collection.specialized system.web.security
system.io system.web.ui
system.text.regularexpression system.web.ui.webcontrols
system.collections system.web.caching
system.configuration system.web.sessionstate
system.text system.web.ui.htmlcontrols
3 @Implements指令
用來在頁面中實(shí)現(xiàn)一個(gè).NET接口.
注:要確保自定義控件能夠象標(biāo)準(zhǔn)服務(wù)器控件那樣對(duì)事件作出相應(yīng),我們的控件就必須實(shí)現(xiàn)

IPostBackEventHandler 接口!!*
< %@Implements Interface="System.Web.UI.IPostBackEventHandler"%>
4 @Register指令
兩種形式:
< %@Register tagprefix="tagprefix" Tagname="tagname" Src="pathname"%>
< %@Register tagprefix="tagprefix" Namespace="namespace" Assembly="assembly"%>
書看到這,產(chǎn)生一點(diǎn)疑問:第一種形式針對(duì)用戶控件,第二種針對(duì)自定義控件.那么用戶控件和自定義

控件到底有何區(qū)別???
5 @Assembly指令(不懂!)
用于直接引用一個(gè)裝配件.
6 @OutoutCache指令(P149)(也不懂)
用來對(duì)頁面在服務(wù)器上如何進(jìn)行高速緩存進(jìn)行控制.
7 @Reference 指令
識(shí)別當(dāng)前頁面在運(yùn)行時(shí)間應(yīng)該動(dòng)態(tài)編譯和鏈接的頁面或控件.這意味著在運(yùn)行時(shí)允許將用戶控件(?)

動(dòng)態(tài)添加到頁面中.(應(yīng)該與page對(duì)象的LoadControl方法結(jié)合起來使用!)
代碼后置:
原來方法: 代碼內(nèi)聯(lián) (程序代碼與Html代碼混合在一個(gè)文件中)
原則是為代碼創(chuàng)建一個(gè)類,并從asp.net page對(duì)象中繼承該類.
規(guī)則: a名稱空間--System
System.Web.UI //用于創(chuàng)建一個(gè)繼承自Page對(duì)象的類
System.Web.UI.WebControls //用于引用控件
System.Data.SqlClient //用來訪問SQL Server
...
b要?jiǎng)?chuàng)建一個(gè)繼承自page的類.在此類中,保證Web控件的變量名與頁面中asp.net服務(wù)器控件的

名稱相同!!
在asp.net頁面中繼承代碼后置類文件:
< %@Page Inherits="class_name" Src="path_to_class_file" %>
注:要使用正確的文件擴(kuò)展名!!
另一種形式:
< %@Page Inherits="ShipMethodClass" %>
此時(shí),asp.net假設(shè)此類是預(yù)先編譯過的,而且位于應(yīng)用程序的bin目錄中.

第二天


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 人人草人人干 | 激情综合在线观看 | 九九热观看视频 | 精品国产一区二区麻豆 | 免费人成在线观看网站品爱网 | 中文字幕日韩欧美一区二区三区 | 日韩午夜片 | 亚洲中午字幕 | 天天操夜夜艹 | 九九精品激情在线视频 | 国产精品成人h片在线 | 亚洲精品久久久久久久福利 | 精品99re66| 色香视频在线 | 久久爱成人网 | 国产欧美日韩亚洲 | 999精品国产 | 亚洲精品久久久中文字幕 | 午夜j | 久久久精品波多野结衣 | 国产欧美日韩高清专区ho | 97精品一区二区三区在线不卡 | 荔枝污 | 午夜免费体验区 | 最好看的毛片 | 综合色久七七综合七七蜜芽 | 亚洲成a人片毛片在线 | 91一区二区在线观看精品 | 97精品视频共享总站 | 在线视频综合网 | 久久99国产精品久久99小说 | 激情国产白嫩美女在线观看 | 添bbb免费观看高清视频 | 一级作爱视频免费观看 | 欧美大片毛片大片 | 九九精品视频在线 | 四虎.com| 99亚洲视频| 久久视频免费在线观看 | 国产99青草全福视在线 | 黄色一级片免费网站 |