前言
由於Asp.Net MVC 不提倡用服務器控件,因此就提供了HtmlHelper幫助類,裡面提供了一些通常用的控件,以及用於輸入驗証的幫助方法。如:
Html.BeginForm(),Html.ActionLink(),Html.CheckBox(),Html.RadioButton(),Html.Password()等
但是由於不每些特殊應用,這些控件還遠遠不夠。下面是擴展的幾個Helper。
點滴
1.RadioButton與Label的結合--->RadioLabel() 代碼如下:
#region 擴展Radiobutton 帶有增加屬性
/// <summary>
/// 擴展Radiobutton
/// </summary>
/// <param name="helper">HtmlHelper</param>
/// <param name="id">radio id</param>
/// <param name="name">radio name</param>
/// <param name="value">radio value</param>
/// <param name="text">labe text</param>
/// <param name="htmlAttribute">radio attr</param>
/// <returns>string</returns>
public static string RadioLabel(this HtmlHelper helper, string id, string name,string value,string text, object htmlAttribute)
{
var redio = "";
var buliderRDO = new TagBuilder("input");
buliderRDO.Attributes.Add("type", "radio");
buliderRDO.GenerateId(id);
buliderRDO.Attributes.Add("value", value);
buliderRDO.Attributes.Add("name", name);
buliderRDO.MergeAttributes(new RouteValueDictionary(htmlAttribute));
redio += buliderRDO.ToString(TagRenderMode.SelfClosing);
var buliderLabel = new TagBuilder("label");
buliderLabel.Attributes.Add("for", id);
buliderLabel.InnerHtml = text;
redio += buliderLabel.ToString(TagRenderMode.Normal);
return redio;
}
#endregion
2.CheckBox與Label 控件的結合 CheckBoxLabel()代碼 如下:
#region 擴展checkbox
/// <summary>
/// 擴展checkbox
/// </summary>
/// <param name="helper">HtmlHelper</param>
/// <param name="id">checkbox id</param>
/// <param name="name">checkbox name</param>
/// <param name="value">checkbox value</param>
/// <param name="text">label text</param>
/// <param name="htmlAttribute">checkbox attr</param>
/// <returns></returns>
public static string CheckBoxLabel(this HtmlHelper helper, string id, string name, string value, string text, object htmlAttribute)
{
string checkbox = "";
var buliderCKB = new TagBuilder("input");
buliderCKB.GenerateId(id);
buliderCKB.Attributes.Add("type", "checkbox");
buliderCKB.Attributes.Add("name", name);
buliderCKB.MergeAttributes(new RouteValueDictionary(htmlAttribute));
checkbox += buliderCKB.ToString(TagRenderMode.SelfClosing);
var buliderLabel = new TagBuilder("label");
buliderLabel.Attributes.Add("for", id);
buliderLabel.InnerHtml = text;
checkbox += buliderLabel.ToString(TagRenderMode.Normal);
return checkbox;
}
#endregion
上面兩個方法多可以自行重載 重載象如下:
#region 擴展checkbox 無法添加屬性
/// <summary>
/// 擴展checkbox 無法添加屬性
/// </summary>
/// <param name="helper"></param>
/// <param name="id">checkbox id</param>
/// <param name="name">checkbox name</param>
/// <param name="value">checkbox value</param>
/// <param name="text">checkbox text</param>
/// <returns></returns>
public static string CheckBoxLabel(this HtmlHelper helper, string id, string name, string value, string text)
{
return CheckBoxLabel(helper, id, name, value, text,null);
}
#endregion
為什麼要寫radio和checkbox與Label 結合控件類 ,因為我們在asp.net太多地方用了radio和checkbox與Label 結合比喻說性別吧。
由於時間關系 我手頭上還有關與 分頁和Fckeditor的控件。如有興趣請留言,我會在最短時間回復與大家,與大家分享這份喜悅。