zoukankan      html  css  js  c++  java
  • ASP.NET MVC 之路(一)HtmlHelper 擴展控件

    前言

    由於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的控件。如有興趣請留言,我會在最短時間回復與大家,與大家分享這份喜悅。

  • 相关阅读:
    freemarker list集合去重,实现hashset
    freemarker特殊字符输出
    idea java 注释模板配置
    IntelliJ IDEA使用eclipse compiler(ecj)解决lombok编译问题
    odoo views
    python 内置函数 3.6版本
    iostat
    性能及优化之 vmstat
    python 基础
    git
  • 原文地址:https://www.cnblogs.com/davidzhou/p/1435766.html
Copyright © 2011-2022 走看看