ASPNET Web窗體頁面框架組件是一個可縮放的通用語言運行時編程模型它可以用於動態地生成Web頁面ASPNET頁面框架組件是ASP的合理進化(ASPNET提供的語法與已有的頁面是兼容的)它被特意地設計用於解決早期模型中的大量的關鍵的缺陷特別是它提供了建立和使用可供重復使用的(reusable)UI控件的能力這些控件可以封裝公用的功能從而減少了頁面開發者需要編寫的代碼數量它使開發者能夠清晰有序地構造頁面邏輯(並非纏繞在一起的代碼)它使用的開發工具提供了強大的WYSIWYG(所見即所得)頁面設計支持能力(已有的傳統ASP代碼是不透明的)本文介紹ASPNET頁面特性的一些基本知識
編寫第一個ASPNET頁面
ASPNET頁面是帶aspx擴展名的文本文件頁面由代碼和標記(tag)組成它們在服務器上動態地編譯和執行為提出請求的客戶端浏覽器(或設備)生成顯示內容它們可以被部署在IIS虛擬目錄樹之下當浏覽器客戶端請求aspx資源的時候ASPNET運行時(runtime)對目標文件進行分析並把它編譯成NET框架類這個類接下來就可以用於動態地處理請求了(請注意aspx文件只在第一次被訪問的時候才編譯編譯形成的類型實例以後供多個請求重復使用)
我們不用修改HTML文件中的代碼只需要把它的擴展名改成aspx就建立了一個ASPNET頁面例如下面的例子演示了一個簡單的HTML頁面它收集用戶的姓名和類別當用戶點擊按鈕的時候就把窗體(form)發回原頁面
<form action=intro_vbaspx method=post>
<h> Name: <input id=Name type=text>
Category: <select id=Category size=>
<option>psychology</option>
<option>business</option>
<option>popular_comp</option>
</select>
<input type=submit value=Lookup>
</h>
</form>
請注意當你點擊Lookup按鈕的時候沒有發生任何事情這是由於該aspx文件只包含了靜態HTML(沒有動態內容)因此相同的HTML被發回到客戶端從而導致窗體字段(文本框和下拉列表)內容丟失
給頁面添加簡單的代碼
ASPNET提供的語法與ASP頁面是兼容的它支持<% %>代碼呈現(render)塊在aspx文件中它可以與HTML內容混合使用在頁面顯示的時候這些代碼塊會嚴格地執行
下面的例子演示了如何在HTML中使用<% %>呈現塊(每次增加字體的尺寸)
<form action=intro_vbaspx method=post>
<h> Name: <input id=Name type=text>
Category: <select id=Category size=>
<option>psychology</option>
<option>business</option>
<option>popular_comp</option>
</select>
</h>
<input type=submit value=Lookup>
<p>
<% Dim I As Integer
For I = to %>
<font size=<%=I%>> Welcome to ASPNET </font> <br>
<% Next %>
</form>
請注意上面的例子中的<% %>代碼塊與ASP不同它會被真正地編譯——而不是由腳本引擎來解釋這改善了運行時的執行性能
ASPNET頁面開發者可以使用<% %>代碼塊動態地修改HTML輸出信息例如下面的代碼演示了如何使用<% %>代碼塊來解釋客戶端發回的結果
<form action=intro_vbaspx>
<h> Name: <input name=Name type=text value=<%=HttpUtilityHtmlEncode(RequestQueryString(Name))%>>
Category: <select name=Category size=>
<%
Dim I As Integer
Dim Values() As String
Values() = psychology
Values() = business
Values() = popular_comp
For I = To ValuesLength
%>
<% If (RequestQueryString(Category) = Values(i)) %>
<option selected>
<% Else %>
<option>
<% End If %>
<%=Values(i)%>
</option>
<% Next %>
</select>
</h>
<input type=submit name=Lookup value=Lookup>
<p>
<% If (Not RequestQueryString(Lookup) = Nothing) %>
Hi <%=HttpUtilityHtmlEncode(RequestQueryString(Name)) %> you selected: <%=HttpUtilityHtmlEncode(RequestQueryString(Category)) %>
<% End If %>
</form>
請注意盡管<% %>代碼塊為我們定制ASPNET頁面返回的文本輸出信息提供了強大的途徑但是它們沒有提供清晰的HTML編程模型上面的例子顯示僅使用<% %>代碼塊的開發者必須自己管理頁面的狀態自己截取被發送的值
From:http://tw.wingwit.com/Article/program/net/201311/12608.html