文章出處

原文:Understanding HTML Helpers in ASP.NET MVC

 

作 者:Shailendra Chauhan works as Software Analyst at reputed MNC and has more than 5 years of hand over Microsoft .NET technologies. He is a .NET Consultant and is the founder & chief editor of www.dotnet-tricks.com and www.dotnetinterviewtricks.com blogs. He is author of book ASP.NET MVC Interview Questions and Answers.
He loves to work with web applications and mobile apps using Microsoft technology including ASP.NET, MVC, C#, SQL Server, WCF, Web API, Entity Framework,Cloud Computing, Windows Azure, jQuery, jQuery Mobile, Knockout.js, Angular.js and many more web technologies. More...

 

HTML助手就是用來返回HTML字符串的方法。這些字符串可以用來表現你所期望的任何內容。例如,可以使用HTML助手來渲染標準的HTML標記,如HTML的<input>、<button>和<img>等標記。


還可以通過創建自定義的HTML助手來渲染更多更復雜的內容,如菜單條或用來顯示數據庫數據的HTML表格。
 

不同類型的HTML助手

以下列出了三種類下的HTML助手:

內聯式的HTML助手

這些需要在同一視圖內使用Razor的@hepler標記來創建。這些助手可以在同一視圖內被重用。

 1     @helper ListingItems(string[] items)  
 2     {  
 3     <ol>  
 4     @foreach (string item in items)  
 5     {  
 6     <li>@item</li>  
 7     }  
 8     </ol>  
 9     }  
10        
11     <h3>Programming Languages:</h3>  
12        
13     @ListingItems(new string[] { "C", "C++", "C#" })  
14        
15     <h3>Book List:</h3>  
16        
17     @ListingItems(new string[] { "How to C", "how to C++", "how to C#" })  

 

內置的HTML助手

內置的HTML助手是HtmlHelper類的擴展方法。內置的HTML助手可以劃分為3種類型:

標準的HTML助手

這些助手可以用來渲染最常用的HTML元素類型,如HTML文本輸入框、復選框等。以下是最常用的標準Html助手列表:

HTML元素

示例

TextBox

@Html.TextBox("Textbox1", "val")
輸出: <input id="Textbox1" name="Textbox1" type="text" value="val" />

TextArea

@Html.TextArea("Textarea1", "val", 5, 15, null)
輸出: <textarea cols="15" id="Textarea1" name="Textarea1" rows="5">val</textarea>

Password

@Html.Password("Password1", "val")
輸出: <input id="Password1" name="Password1" type="password" value="val" />

Hidden Field

@Html.Hidden("Hidden1", "val")
輸出: <input id="Hidden1" name="Hidden1" type="hidden" value="val" />

CheckBox

@Html.CheckBox("Checkbox1", false)
輸出: <input id="Checkbox1" name="Checkbox1" type="checkbox" value="true" /> <input name="myCheckbox" type="hidden" value="false" />

RadioButton

@Html.RadioButton("Radiobutton1", "val", true)
輸出: <input checked="checked" id="Radiobutton1" name="Radiobutton1" type="radio" value="val" />

Drop-down list

@Html.DropDownList (“DropDownList1”, new SelectList(new [] {"Male", "Female"}))
輸出: <select id="DropDownList1" name="DropDownList1"> <option>M</option> <option>F</option> </select>

Multiple-select

Html.ListBox(“ListBox1”, new MultiSelectList(new [] {"Cricket", "Chess"}))
輸出: <select id="ListBox1" multiple="multiple" name="ListBox1"> <option>Cricket</option> <option>Chess</option> </select>

 

強類型的HTML助手

這 些助手主要用來在強類型視圖內渲染最常用的HTML元素類型,如HTML文本輸入框、復選框等等。HTML元素會根據模型屬性來創建。強類型HTML助手 需要與lambda表達式一起使用。模型對象會被作為lambda表達式的值來傳遞,而你可以從模型中選擇一個字段或屬性來設置HTML助手id、名稱和 值屬性。以下是最常用的強類型HTML助手的列表:

HTML元素

示例

TextBox

@Html.TextBoxFor(m=>m.Name)
輸出: <input id="Name" name="Name" type="text" value="Name-val" />

TextArea

@Html.TextArea(m=>m.Address , 5, 15, new{}))
輸出: <textarea cols="15" id="Address" name=" Address " rows="5">Addressvalue</textarea>

Password

@Html.PasswordFor(m=>m.Password)
輸出: <input id="Password" name="Password" type="password"/>

Hidden Field

@Html.HiddenFor(m=>m.UserId)
輸出: <input id=" UserId" name=" UserId" type="hidden" value="UserId-val" />

CheckBox

@Html.CheckBoxFor(m=>m.IsApproved)
輸出: <input id="Checkbox1" name="Checkbox1" type="checkbox" value="true" /> <input name="myCheckbox" type="hidden" value="false" />

RadioButton

@Html.RadioButtonFor(m=>m.IsApproved, "val")
輸出: <input checked="checked" id="Radiobutton1" name="Radiobutton1" type="radio" value="val" />

Drop-down list

@Html.DropDownListFor(m => m.Gender, new SelectList(new [] {"Male", "Female"}))
輸出: <select id="Gender" name="Gender"> <option>Male</option> <option>Female</option> </select>

Multiple-select

Html.ListBoxFor(m => m.Hobbies, new MultiSelectList(new [] {"Cricket", "Chess"}))
輸出: <select id="Hobbies" multiple="multiple" name="Hobbies"> <option>Cricket</option> <option>Chess</option> </select>

 

模板化的HTML助手

這 些助手需要弄清楚那些HTML元素是被要求基于模型類的屬性進行渲染的。盡管這需要一些細致和耐心的設置,但這是一種將數據顯示給用戶的非常靈活的做法。 為了使用模板化的HTML助手來設置適合的HTML元素,需要使用DataAnnitation類的DataType特性。

例如,當使用DataType作為密碼,模板化的助手會自動渲染密碼類型的HTML的input元素。

模板化助手

示例

Display

渲染一個指定模型屬性的只讀視圖,并基于屬性的數據類型和元數據選擇適當的HTML元素。

Html.Display("Name")

DisplayFor

前一個的助手的強類型版本。
Html.DisplayFor(m => m. Name)

Editor

為指定的模型屬性渲染一個編輯器,并給予屬性的數據類型和元數據選擇適當的HTML元素。
Html.Editor("Name")

EditorFor

前一個的助手的強類型版本。
Html.EditorFor(m => m. Name)

 

自定義的HTML助手

還可以通過創建HtmlHelper類的擴展方法或在功能類內創建靜態方法的方式來創建自定義的輔助方法。

 1         public static class CustomHelpers  
 2         {  
 3         //Submit Button Helper  
 4         public static MvcHtmlString SubmitButton(this HtmlHelper helper, string  
 5         buttonText)  
 6         {  
 7         string str = "<input type=\"submit\" value=\"" + buttonText + "\" />";  
 8         return new MvcHtmlString(str);  
 9         }  
10         //Readonly Strongly-Typed TextBox Helper  
11         public static MvcHtmlString TextBoxFor<TModel, TValue>(this  
12         HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>>  
13         expression, bool isReadonly)  
14         {  
15         MvcHtmlString html = default(MvcHtmlString);  
16            
17         if (isReadonly)  
18         {  
19         html = System.Web.Mvc.Html.InputExtensions.TextBoxFor(htmlHelper,  
20         expression, new { @class = "readOnly",  
21         @readonly = "read-only" });  
22         }  
23         else  
24         {  
25         html = System.Web.Mvc.Html.InputExtensions.TextBoxFor(htmlHelper,  
26         expression);  
27         }  
28         return html;  
29         }  
30         } 

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()