RadioButton控制項會在用戶端渲染成<input type="radio" />,和服務端控制項一樣,也可以通過GroupName屬性盡心分組。
Button控制項會在用戶端渲染成<input type="submit" />
LinkButton控制項會在用戶端渲染成<a href="javascript:__doPostBack" />
ImageButton控制項是一個可以設定ImageUrl的Button,它會在用戶端渲染成<input type="image" />
相同點 :都可以把OnClientClick屬性設定為"return confirm('確定要刪除嗎?')";
Panel控制項會在用戶端渲染成DIV,如果設定了它的GroupingText屬性,則會渲染成<fieldset><legend>這樣設定</legend></fieldset>,也就是GroupBox的效果。
Hyperlink控制項會在用戶端渲染成<a />標記。
可以設定屬性NavigateUrl=""和Target="",若設定ImageUrl屬性,則會渲染成<a href=""><image /></a>.
FileUpload控制項會在用戶端渲染成<input type="file">.
一般上傳檔案的代碼這樣寫
if(FileUpload1.hasFile())
{
string uploadPath = Server.MapPath("~/upload/");
FileUpload1.SaveAs(uploadPath + FileUpload1.FileName);
}
總的來說,控制項共分為三種:
1)HTML控制項
2)ASP.NET服務端控制項
3)有runat="server"的HTML控制項
驗證控制項
1)RequireFieldValidator:必要欄位,可進行服務端的非空校正,常用屬性有:ErrorMessage, ControlToValidate , InitialValue . 在服務端驗證時可以這樣寫if(this.IsValide){…}
2)RangeValidator:判斷值是否在給定的最大值(MaximumValue)和最小值(MinimumValue)之間,可比較的資料類型有string, int , currency.
3)CompareValidator:用於比較兩個值的關係是否滿足要求的或者指定類型的資料。比較操作符有:<,>,=,!= .常用屬性:ValueToCompare :與哪個值比較,ControlToCompare :與哪一個控制項進行比較。
4)RegularExpressionValidator:用於驗證資料滿足的Regex。常用屬性:ValidationExpression :定義Regex。
5)CustomValidator:用於特殊情況的自訂驗證。
6)注意 :(1)幾乎所有的驗證控制項都得在用戶端和服務端進行校正。
(2)給驗證控制項進行分組:ValidationGroup
(3)是否觸發校正事件:CauseValidation:false,表示不觸發驗證事件
(4)修改驗證控制項是否佔位:Display設定成Dynamic或者Static.
資料繫結
1)例如:<ItemTemplate><%#Eval ("Id")%></ ItemTemplate >
2)Repeater資料控制項用於綁定資料的遍曆顯示,當然,我們也可以用foreach語句手寫。
3)Repeater控制項的其它模板
(1)<AlternatingItemTemplate>設定隔行的不同風格,也就是偶數行的風格。
(2)<HeadTemplate>和<FootTemplate>頭部尾部的模板,分別顯示在資料的前面和後面,比如可防 止<table></table>或者<ul></ul>等。
(3)<SeperatorTemplate>,兩項資料之間的分隔字元。
資料庫中只存放圖片的路徑,ResolveClientUrl("~/images/ + url");
放在<ItemTemplate>模板中的控制項無法直接在後台c#代碼中操作,得先通過ID找到控制項,如:e.Item.FindControl("txtName");
Repeater控制項一般只用來展示資料,而ListView控制項用來實現增刪改產操作更方便一些。
Eval()是單向綁定,用於讀取資料庫中的資料;Bind()是雙向繫結,即能把資料庫中的值讀到頁面上,也能把使用者的值傳到資料庫中。
ListView控制項的注意事項:
(1)自動產生的樣式要提煉到css樣式中,不要做成內聯式的;
(2)<ItemTemplate>裡面一般沒必要用<asp:Label>控制項展示唯讀資料,直接輸出就可以。
(3)<LayoutTemplate>中必須有一個id為itemPlaceHolder的服務端控制項。將表頭自動產生的英文欄位改成漢語,沒用的ID要刪除,沒必要展示出來。
在ItemDataBound事件中應注意:
(1)判斷資料行的類型 e.Item.ItemType == ListViewItemType.DataRow
(2) 取得對應的RowView ListViewDataItem lvDataItem = (ListViewDataItem)e.Item; DataRowView rowView = (DataRowView)lvDataItem.DataItem;
(3)在用FindControl時應注意 AlternatingItemTemplate問題。
ListView和GridView的區別
(1)GridView只能渲染成Table
(2)ListView既能渲染成Table,也能渲染成<ul><li>
DropDownList控制項綁定SelectedValue屬性,如:SelectedValue="<%#Eval('txtName')%>"
如果在頁面前端不涉及增刪改查等互動資訊的純展示頁面,可以禁用ViewState,有兩種方法:
(1)頁面整體禁用ViewState:在頂部<page>標籤內加EnabelViewState="false"
(2)對指定控制項禁用ViewState:在該控制項的屬性上添加EnabelViewState="false"
網站效能調優
(1)緩衝Cache是網站效能調優的第一個手段;
(2)索引Index是資料庫效能調優的第一個手段;
設定頁面緩衝的方法:在頁面頭部地區<page>中設定<%@ OutputCache Duration="20" VaryByParam="none"(這項是可變的,可設定為參數:id;num;age等)%>
資料緩衝的設定方法,針對ObjectDataSource設定屬性,
(1)EnableCaching="True"
(2)CacheDuration="20"
寫在後邊:魯迅先生有句話"哪裡有天才?我是把別人喝咖啡的功夫都用在工作和學習上的!"非常贊同,勤能補拙是良訓。好了,今天就到這裡吧!