服務(wù)器端的控制如何工作? 作 者 : 青蘋果電腦工作室
這是如何實(shí)現(xiàn)的?關(guān)鍵是runat="server" 屬性。要了解這是如何進(jìn)行的,看看瀏覽器內(nèi)頁面 的源代碼。是這樣的:
〈 HTML 〉 〈 BODY 〉 You selected 'Windows 98' for machine 'tizzy'. 〈 FORM name="ctrl0" method="post" action="pageone.aspx" id="ctrl0" 〉 〈 INPUT type="hidden" name="__VIEWSTATE" value="a0z1741688109__x" 〉 Machine Name: 〈 INPUT type="text" id="txtName" name="txtName" value="tizzy" 〉 〈 P / 〉 Operating System: 〈 SELECT id="selOpSys" size="1" name="selOpSys" 〉 〈 OPTION value="Windows 95" 〉Windows 95〈 /OPTION 〉 〈 OPTION selected value="Windows 98" 〉Windows 98〈 /OPTION 〉 〈 OPTION value="Windows NT4" 〉Windows NT4〈 /OPTION 〉 〈 OPTION value="Windows 2000" 〉Windows 2000〈 /OPTION 〉 〈 /SELECT 〉 〈 P / 〉 〈 INPUT type="submit" value="Submit" 〉 〈 /FORM 〉 〈 /BODY 〉 〈 /HTML 〉
用這個(gè)ASP+ 代碼創(chuàng)建 〈 FORM 〉 :
〈 FORM runat="server" 〉 ... 〈 /FORM 〉
當(dāng)頁面被ASP+執(zhí)行時(shí),到瀏覽器的輸出是:
〈 FORM name="ctrl0" method="post" action="pageone.aspx" id="ctrl0" 〉 ... 〈 /FORM 〉
可以看到action 和 method 屬性是ASP+自動(dòng)創(chuàng)建的,所以表單中控制的值就會(huì)被郵遞回同一頁。 ASP+還為表單增加唯一的id 和 name 屬性,因?yàn)槲覀儧]有提供。但是如果你確實(shí)指定了這些屬性, 就會(huì)使用你所指定的值。
如果包含了method="GET" 屬性,表單的內(nèi)容就作為查詢字符串的一部分被發(fā)送給服務(wù)器,同 以前版本的ASP一樣,自動(dòng)狀態(tài)管理就不再有效。
在表單內(nèi),用這樣的ASP+ 代碼創(chuàng)建文本框:
〈 INPUT type="text" id="txtName" runat="server" 〉
瀏覽器的結(jié)果是這樣的:
〈 INPUT type="text" id="txtName" name="txtName" value="tizzy" 〉
可以看到當(dāng)表單被提交時(shí),ASP+以控制中的文本值自動(dòng)增加了value 屬性。它還保留了我們 提供的name 屬性,還以同樣的值增加了一個(gè)id屬性。
我們?yōu)椤?SELECT 〉 列表寫了以下代碼:
〈 SELECT id="selOpSys" size="1" runat="server" 〉 〈 OPTION 〉Windows 95〈 /OPTION 〉 〈 OPTION 〉Windows 98〈 /OPTION 〉 〈 OPTION 〉Windows NT4〈 /OPTION 〉 〈 OPTION 〉Windows 2000〈 /OPTION 〉 〈 /SELECT 〉
ASP+ 被迫輸出這個(gè)HTML,適當(dāng)?shù)摹?OPTION 〉元素 有一個(gè)selected屬性:
〈 SELECT name="selOpSys" id="selOpSys" size="1" 〉 〈 OPTION value="Windows 95" 〉Windows 95〈 /OPTION 〉 〈 OPTION selected value="Windows 98" 〉Windows 98〈 /OPTION 〉 〈 OPTION value="Windows NT4" 〉Windows NT4〈 /OPTION 〉 〈 OPTION value="Windows 2000" 〉Windows 2000〈 /OPTION 〉 〈 /SELECT 〉
同樣創(chuàng)建一個(gè)唯一的id 屬性,并自動(dòng)給〈 OPTION 〉元素增加相匹配的 value 屬性。(如果我們 在頁面中提供了自己的value屬性,將被保留)。
所以你可以看到,并沒有使用什么神奇的手段。都是標(biāo)準(zhǔn)的HTML,沒有客戶機(jī)側(cè)腳本庫,也 沒有ActiveX 控制或 Java applets。同樣重要的一點(diǎn)是在服務(wù)器上根本沒有存儲(chǔ)任何狀態(tài)。相反, 只是用標(biāo)準(zhǔn)的方法將值簡單地郵遞給服務(wù)器。在頁面發(fā)送給客戶之前,通過請(qǐng)求,值由修改服務(wù)器 控制的HTML保存并維護(hù)。
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!