大概分爲三種控件:javascript
HTML控件,ASP.NET把HTML控件當成普通字符串渲染到瀏覽器端,不去檢查正確性,沒法在服務端進行處理
ASP.NET服務端控件,通過ASP.NET高度封裝的控件,運行在服務端,能夠用C#代碼進行操做,
會渲染到客戶端爲HTML控件
runat=server的HTML控件,在HTML控件中添加runat="server",也是運行在服務端,也能夠用C#代碼操做
也會渲染成HTML,不像ASP.NET服務端控件那樣高度封裝,和服務端控件相比:
若是控件沒有被ASP.NET服務端控件封裝時,用這個很方便。java
ASP.NET服務端控件是對HTML的封裝,在C#代碼中就能夠用 txt.Text="abc「方式來調用,但被人濫用,
應該 物盡其用,服務端控件在內網系統(OA),互聯網系統的後臺部分訪問頻率不高的很適合用web
全部的ASP.NET大部分都是從 Control,WebControl類繼承的,幾乎都有的成員有:
1. ClientID, 得到控件在客戶端的ID,控件在服務端的ID不必定等於客戶端的ID,如 ListView 就不是
所以若是要在客戶端經過 DOM,JQuery的 getElementByid,$("#id")來操做最好不要寫服務端ID,
而是 $("#<%=txt1.ClientID%>") 或 document.getElementById('<%=Button1.ClientID %>')
2. Visible 屬性,控件是否可見,若是Visible=False 是不會渲染到HTML中的,
和HTML的style.display='none' 效果是不同的
3. CssClass 屬性,控件的樣式名,就是HTML中控件的 Class 屬性,也可單獨修改 BackColor,等屬性,
可是不建議這麼作,由於會生成不少內聯樣式,佔帶寬,不便統一修改
4. Attributes, 用於設置獲取控件的額外屬性,和DOM中的 setAttribut(),getAttribut()同樣
Button1.Attributes["code"] = "5"; //在HTML中爲Button1增長一個 code 屬性,並賦值爲5
Button1.Attributes["onmouseover"] = "alert('hello!')"; //增長一個onmouseover事件瀏覽器
1. Lable控件,Text屬性爲顯示的文本,默認渲染成 <span>,當設置 AssociatedControlID屬性
用於關聯一個控件時,則會渲染成<Label>而且將 for 屬性設置爲被關聯的控件的ClientID
2. Literal控件,也是展現一段文本,可是不會渲染額外的標籤,就是將Text屬性的值展現出來
還有一個功能就是 Mode屬性的Encode,能夠將Text裏面的代碼轉義HTML,<將轉換成< 防止XSS跨站
3. TextBox控件,文本框控件,TextMode屬性取值SingleLine,MultiLine,Password,分別渲染成:
input(type=text),textarea和input(type=password),當AutoPostBack屬性爲 true的時候,
用戶焦點離開TextBox就會形成頁面Post提交,實現原理就是 TextChanged事件,文本發生變化
時事件觸發,ASP.NET提交表單最好用調用 __doPostBack方法
4. RadioButton控件,渲染爲input(type=radio),經過GroupName屬性進行分組
5. Button控件,OnClientClick屬性,當用戶點擊時在瀏覽器執行的代碼,渲染成 input(type=button)
6. LinkButton控件,渲染成超連接,href爲一段javascript代碼,進行表單的POST,沒法"在新窗口中打開鏈接"
7. ImageButton控件,顯示爲圖片,渲染成 input(type=image)
Button,LinkButton,ImageButton等控件都有CommandName,CommandArgument兩個屬性和 Command 事件
可讓多個按鈕共享一個 Command 事件處理函數,經過讀取事件對象 e 的CommandName,CommandArgument
兩個屬性讀取被點擊按鈕上設置的這兩個參數來執行不一樣的操做,如編輯,刪除多行數據
8. Panel控件,用來存放一些控件,當Visibe設爲False的時候,裏面的控件都所有隱藏,默認渲染成<DIV>
若是設置了 GroupingText屬性(爲控件設一個邊框並設置標題),那麼就渲染爲含有<fieldset>的div標籤,
也就是GroupBox效果
9. HyperLink控件,超連接,和LinkButton不同(常考),不會向服務器端Post,就是一個超連接,
NavigateURL:連接地址,Text:顯示文本,若是設定imageUrl則會顯示圖片超連接
主要優點在於會自動將虛擬路徑轉換爲客戶端路徑,渲染後就是一個 <a>
10. FileUpload控件,文件上傳控件,渲染成input(type=file),屬性:
FileContent 以流形式得到上傳的文件
HasFile Bool值,表示用戶是否選擇文件
FileName 文件名,如: a.jpg
PostedFile 將要上傳的文件,裏面也有 FileName 結果爲: C:\AA\a.jpg ,可得到文件詳細信息
SaveAs方法用於將文件保存到磁盤的指定位置,注意:只容許上傳指定類型文件,上傳文件夾不給執行服務器
注意:
默認最大的上傳文件只有 4MB ,如想更大,則須要修改 Web.Conf 的<system.web>中,增長以下屬性:
<httpRuntime maxRequestLength="10240"/> // 按KB計算,1024KB = 1MB函數
11.MultiView,View 用來做簡單的嚮導,一個MultiView包含多個View,View必須在MultiView裏面
ActiveViewIndex 當前活動視圖控件,默認爲-1 不顯示,從0開始設置
ActiveViewChanged事件 當視圖改變時所觸發的事件ui
12.Wizard嚮導 是MultiView的升級版,大部份都封裝好了的spa
13.ImageMap熱點地圖 主要是對圖片區域進行處理,如中國地圖之類的
ImageAlign 指定圖片地址
HotSpots 區域的設置,上,下,左,右
HotSpotMode 導航的行爲,是否致使回發code
if (FileUpload1.HasFile) //判斷用戶是否選擇了文件 { string path = Server.MapPath("~/upload/"); //獲得上傳路徑 FileUpload1.SaveAs(path + FileUpload1.FileName); //保存文件 Response.Write("<script>alert('上傳成功!')</script>"); } else { Response.Write("<script>alert('上傳失敗!')</script>"); }
protected void Button1_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { // 將虛擬地址轉換成物理地址 string dirP = Server.MapPath("~/UpLoad/"); // 判斷目錄是否存在,不存在則建立 if (!Directory.Exists(dirP)) { Directory.CreateDirectory(dirP); } //獲得擴展名 string ExtName = Path.GetExtension(FileUpload1.FileName).ToLower(); //判斷上傳的文件格式 if (ExtName != ".jpg" && ExtName != ".gif") { Page.ClientScript.RegisterStartupScript(typeof(Page), null, "alert('格式不正確!')", true); return; } // 經過 GetFileName() 方法 獲得不會重複的文件名 string FileName = GetFileName() + ExtName; // 用SaveAs方法保存文件,裏面必需要 物理路徑 FileUpload1.SaveAs(dirP + FileName); Page.ClientScript.RegisterStartupScript(typeof(Page), null, "alert('上傳成功!')", true); Label1.Text = "上傳的文件名:" + FileUpload1.FileName + "<br />" + "文件大小:" + FileUpload1.PostedFile.ContentLength + "<br />" + "文件類型:" + FileUpload1.PostedFile.ContentType + "<br />" + "保存路徑:" + dirP + FileName; Image1.ImageUrl = ("~/UpLoad/") + FileName; } else { Page.ClientScript.RegisterStartupScript(typeof(Page), null, "alert('請選擇文件!')", true); } } // 經過取得當前時間來獲得 不重複的文件名 public string GetFileName() { StringBuilder file = new StringBuilder(); file.Append(DateTime.Now.Year); file.Append(DateTime.Now.Month); file.Append(DateTime.Now.Day); file.Append(DateTime.Now.Second); file.Append(DateTime.Now.Millisecond); return file.ToString(); }