在asp.net mvc 中每一個Html控件都傳回了MvcHtmlString ,他繼承了HtmlString。
下面自定義一個關于顯示男女性别的自定義Html控件,使在建立頁面時,可以直接調用該自定義的Html控件。
可以檢視其他的Html控件傳回的是HtmlHelper,是以自定義的時候也要傳回相同的類型
直接在Controls檔案夾下建立要自定義的html控件
代碼如下:
using System.Web.Mvc;
using System.Text;
namespace System.Web.Mvc.Html
{
/// <summary>
/// 顯示男女性别自定義控件
/// </summary>
public static class LabelGenderExtensions
{
/// <summary>
/// 擷取值時:value值為1表示男,value值為2表示女
/// 預設選中男
/// </summary>
/// <param name="helper"></param>
/// <returns></returns>
public static MvcHtmlString LabelGender(this HtmlHelper helper)
{
StringBuilder str = new StringBuilder();
str.Append("<input type='radio' name='sex' value=1 checked='checked'></input>");
str.AppendFormat("<label for='{0}'>{1}</label>", "man", "男"); // 顯示男性值
str.Append("<input type='radio' name='sex' value=2 ></input>");
str.AppendFormat("<label for='{0}'>{1}</label>", "female", "女"); // 顯示女性值
return new MvcHtmlString(str.ToString());
}
}
}
此類要傳回的value值也可以根據參數的方式傳入
在頁面中隻需調用: @Html.LabelGender()
顯示如圖:

注意事項:
1、注意建立類的命名空間要與本身的@Html保持一緻
2、建立的類須為靜态類,命名規則一般字尾為Extensions
能對HtmlHelper控件進行擴充,為建立自己的html标簽提供了很大的友善。