天天看點

Asp.net MVC3 自定義HtmlHelper控件

在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()  

顯示如圖:

Asp.net MVC3 自定義HtmlHelper控件

注意事項:

1、注意建立類的命名空間要與本身的@Html保持一緻

2、建立的類須為靜态類,命名規則一般字尾為Extensions

能對HtmlHelper控件進行擴充,為建立自己的html标簽提供了很大的友善。

繼續閱讀