ASP.NET Page 和一些基本控件

個人學習筆記。

Page 類成員

通過 Request、Response 和 Server 實現對 context.Request、context.Response 和 context.Server 的調用簡化。

通過 AppRelativeVirtualPath 獲得頁面相對於應用根路徑的路徑。

FindControl(controlId):根據控件 id 找到控件。

IsPostBack、Session

ResolveClientUrl(url):將虛擬路徑轉化爲客戶端訪問的路徑。

ResolverUrl(url):將虛擬路徑轉化爲相對於網站根目錄的路徑。

HTML 控件

ASP.NET 把 HTML 控件當做普通字符串渲染到瀏覽器端,不會檢查其正確性,無法在服務器端進行處理。

ASP.NET 基本控件

ASP.NET 服務端控件是對 HTML 的封裝,可在服務器端進行操作,會渲染到客戶端成爲 HTML 控件。控件大多從 Control、WebControl 類中繼承,它們都有的成員:
ClientID:控件在客戶端的 id,控件在服務端的 id 不一定和客戶端 HTML 中的 id 相同。

Visible:是否可見。

CssClass:控件的樣式名,即 HTML 中控件 class 的屬性。

Attribute:設置獲取控件的額外屬性。

Label

AssociatedControlID 屬性用來關聯一個控件,爲空時會展示爲 Span,指定爲一個控件的 id 時會展示爲 HTML 的

Literal

不會渲染任何額外的標籤,只展示 Text 屬性內容。

TextBox

TextMode 屬性常用取值有SingleLine、MultiLine 和 Password,分別渲染爲 input(type=text)、textarea 和 input(type=password)。
AutoPostBack 屬性爲 true 時,用戶焦點離開 TextBox 時就會自動讓頁面 Post。
TextChanged 事件在文本內容發生變化時觸發。

RadioButton

渲染爲 input(type=radio),通過GroupName 屬性進行分組。

Button

OnClientClick 是字符串屬性,JavaScript 代碼。

LinkButton

Button 渲染爲按鈕,LinkButton 渲染爲超鏈接。LinkButton 的 href 是 JavaScript 代碼,進行的是表單的 Post,無法在新窗口中打開。不建議使用。

ImageButton

渲染爲 input(type=image)。

Button、LinkButton 和 ImageButton 等控件都有 CommandName、CommandArgument 屬性和 Command 事件;可以讓多個按鈕共享同一個 Command 事件處理方法,通過讀取事件對象的 CommandName 和 CommandArgument 兩個屬性來執行不同的操作。

Panel

用來放其他控件。如設定GroupngText 則渲染爲 <fieldset>,即 GroupBox 效果,否則渲染爲 <div>

HyperLink

超鏈接。與 LinkButton 不同,不會向服務器端 Post。

FileUpload

文件上傳控件,渲染爲 input(type=file)。FileContent 屬性表示以流形式獲得上傳的文件,SaveAs 方法用於將文件保存到磁盤的指定位置。

RangeValidator

範圍驗證控件。MinimunValue、MaximunValue 分別爲最小值和最大值,Type 是數據類型。
RangeValidator、CompareValidator 和 RegularExpressionValidator 等都不會對非空值進行校驗。

CompareValidator

比較驗證控件。Operator 是比較操作符,可選值:DataTypeCheck、Equal、GreaterThan、GreaterThanEqual、LessThan、LessThanEqual、NotEqual。
ValueToCompare 會比較運算符右邊的值,ControlToCompare 設定與另外一個控件比較。

RegularExpressonValidator

正則表達式驗證控件。ValidationExpression 屬性爲正則表達式。

CustomValidator

自定義驗證控件。

ServerValidate 事件

該事件爲服務器端的校驗代碼,在事件處理方法中讀取 args.Value 來獲取待校驗的值,合法設爲 true。如果 ClientValidationFunction 設定一個方法名,首先會在客戶端調用指定的 JavaScript 函數進行客戶端校驗,否則只做服務器端校驗。在客戶端校驗方法的簽名爲:<function_name>(src, args),args 屬性及意義與服務器端相同。

runat=server 的 HTML 控件

在 HTML 控件中添加 runat=“server” 是運行在服務器端的,且可以在服務器端進行操作,也能夠渲染到客戶端,並不同 ASP.NET 控件一樣高度封裝。和 ASP.NET 控件相比好處是:需要在服務器端進行操作時,如果控件沒有被 ASP.NET 封裝,用這個方法會很方便。runat=“server” 的 HTML 控件也會對虛擬路徑進行處理。

數據綁定控件

數據綁定分爲數據源和數據綁定控件兩部分,數據綁定控件通過數據源獲取數據,通過數據源隔離數據提供者和數據使用者並通過數據源對數據進行修改。數據源有:SqlDataSource、AccessDataSource、ObjectDataSource、LinqDataSource、EntityDataSource、XmlDataSource等(SiteMapDataSource 是 SiteMap 專用數據源)。因爲頁面直連數據庫違反最基本的分層原則,所以 SqlDataSource 和 AccessDataSource 基本不會使用,而 LinqDataSource 和 EntityDataSourfce 也只是在很極端的採用 Linq 和 EF 項目中才會使用,XmlDataSource 是隻處理 XML 數據使用。ObjectDataSource 是 Web 開發中應用最廣的數據源。
數據綁定控件有列表數據綁定控件:DropDownList、RadioButtonList、ListBox、CheckBoxList 和 BulletedList 等,和複雜控件:DataGrid、GridView、DetailsView、FormView、ListView、Repeater 和 DataList 等。複雜控件中 DataGrid 已不推薦使用,Repeater 是最輕量級的控件,在前端使用的最多,ListView 是 GridView、DetailsView、FormView、Repeater 和 DataList 等控件的統一。

ObjectDataSource

ObjectDataSource 用來將一個類作爲數據源,TypeName 屬性是數據源類的類名,還有增刪查改:InsertMethod、DeleteMethod、SelectMethod、UpdateMethod 等其他屬性。增刪查改方法可能有參數,參數值通過 DeleteParameters、UpdateParameters 和 InsertParameters 等嵌套字點設置。
可通過可視化界面將 ObjectDataSource 拖放到界面,在右上角智能標誌上選擇“配置數據源”進行配置。數據源類一般採用數據集。

列表綁定控件

DropDownList 顯示來自 ObjectDataSource 的數據,DataSourceID 屬性是選擇數據源,之後要設定顯示字段(DataTextField)和值字段(DataValueField)。類似的 RadioButtonList、ListBox、CheckBoxList 和 BulletedList 等用法相同。
還可以通過代碼來綁定,現已不推薦該方法。用代碼綁定可以將任何實現了 IEnumerable 接口的對象綁定到數據綁定控件中。
Eg.ListBox2.DataSource = new object[]{1, 2, 3}; ListBox2.DataBind();
數據綁定控件會默認將數據保存至 ViewState 中,因此不會每次刷新頁面都重新加載數據,只有第一次進入時需要加載;所以代碼綁定在 ViewState 被禁用時會產生各種麻煩,而使用 DataSourceID 的方式中,控件會自動判斷是否重新獲得數據。

複雜數據綁定控件

當想要將包含文本和圖片信息顯示在界面上時,要使用 Repeater、ListView 等控件。
在 HTML 中,表格是手寫的,是一種靜態的,而很多數據是不固定的、是動態的;可以使用 DOM 動態增加表格行,但此時數據仍是固定的,就需要從數據庫等地方取得動態的數據進行顯示。

Repeater

Repeater 用於對綁定數據源中的數據進行遍歷顯示,顯示格式由 Repeater 的 <ItemTemplate> 決定。
Eg.<ItemTemplate>姓名:<%#Eval("Name")%><b>年齡:<%#Eval("Age")%></b></ItemTemplate>
調用 Eval、Bind 等數據綁定方法時需加上 #。Eval 就是將屬性顯示到指定位置,所以也可以在文本框中顯示:
<ItemTemplate>姓名:<input type="text" value='<%#Eval("Name")%>'/></ItemTemplate> <asp:TextBox Text='<%#Eval("Name")%>' runat="server"></asp:TextBox>
Repeater 還有如下模板:
<AlternatingItemTemplate> 設置隔行的不同顯示風格,如設定,則奇數行使用 <ItemTemplate> 模板,偶數行使用<AlternatingItemTemplate> 模板。可以實現顏色相間的效果。
HeaderTemplate、FooterTemplate:頭部和尾部的模板,分別顯示在所有數據的前面和後面。
SeparatorTemplate:兩項數據之間的分隔符,例如換行符。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章