日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁編程開發(fā)C#.NET → 在 ASP.NET MVC 中創(chuàng)建自定義 HtmlHelper

      在 ASP.NET MVC 中創(chuàng)建自定義 HtmlHelper

      相關軟件相關文章發(fā)表評論 來源:雪的夢幻時間:2010/9/21 10:54:31字體大。A-A+

      作者:佚名點擊:321次評論:0次標簽: MVC

      • 類型:編程控件大小:22.2M語言:中文 評分:2.2
      • 標簽:
      立即下載

      在ASP.NET MVC應用程序的開發(fā)中,我們常碰到類似Html.Label或Html.TextBox這樣的代碼,它將在網頁上產生一個label或input標記。這些HtmlHelper的擴展方法有些像WebForm中的控件,只需傳入一些參數(shù)即可生成相應的HTML代碼。本文將介紹創(chuàng)建HtmlHelper的方法。



      Html.Textbox方法的返回值是MvcHtmlString,它生成了一些HTML代碼。創(chuàng)建HtmlHelper,就像在生成HTML代碼。下面以一個帶有簡要描述功能的鏈接HtmlHelper為例介紹創(chuàng)建自定義HtmlHelper的方法。它將顯示一個鏈接并在下方簡要介紹該與該鏈接內容有關的信息。在某些帶有簡要描述的項列表頁上可能會需要類似的功能。最后的結果預覽如下圖。

      上面使用了3次自定義的HtmlHelper,每次生成的代碼如下

      1 <div>
      2 <p class="LinkTitle"><a href="#">鏈接標題</a></p>
      3 <p class="LinkDescription">鏈接描述</p>
      4 </div>


      可能稍微有點復雜,因為有了標簽的嵌套。

      做好準備工作以后,新建一個靜態(tài)類LinkWithDescriptionExtensions,添加靜態(tài)方法LinkWithDescription,代碼如下

      1 /// <summary>
      2 /// 帶描述的鏈接擴展方法
      3 /// </summary>
      4 /// <param name="htmlHelper">要擴展的HtmlHelper類</param>
      5 /// <param name="title">標題</param>
      6 /// <param name="url">鏈接地址</param>
      7 /// <param name="description">描述</param>
      8 /// <returns>HTML代碼</returns>
      9 public static MvcHtmlString LinkWithDescription(this HtmlHelper htmlHelper, string title, string url, string description)
      10 {
      11 // 生成與標題鏈接有關的HTML代碼
      12 TagBuilder titleContainer = new TagBuilder("p"); // 標題鏈接容器p
      13 TagBuilder titleLink = new TagBuilder("a"); // 標題中的文字要有鏈接,所以包含在a標簽內
      14 titleLink.MergeAttribute("href", url); // 為a添加href屬性并指定鏈接地址
      15 titleLink.SetInnerText(title); // 標題文字
      16 titleContainer.InnerHtml = titleLink.ToString(); // 將a放到p中
      17 titleContainer.AddCssClass("LinkTitle"); // 為標題添加樣式
      18
      19 // 生成與鏈接描述有關的HTML代碼
      20 TagBuilder descriptionContainer = new TagBuilder("p"); // 連接描述容器p
      21 descriptionContainer.InnerHtml = description; // 描述文字
      22 descriptionContainer.AddCssClass("LinkDescription"); // 為描述添加樣式
      23
      24 // 將上述元素放入一個DIV中
      25 TagBuilder div = new TagBuilder("div");
      26 div.InnerHtml = string.Format("{0}{1}", titleContainer.ToString(), descriptionContainer.ToString());
      27
      28 // 返回生成的HTML代碼
      29 return MvcHtmlString.Create(div.ToString());
      30 }


      先理清結構再使用TagBuilder生成HTML代碼是比較方便的。這里也可以使用拼接字符串的方式來生成HTML代碼,只要最后得到所需的HTML代碼就可以,但是我個人不建議使用拼接字符串的方式,這樣不僅思維容易混亂而且容易出錯。使用TagBuilder既結構清晰,又不容易出錯。

      在ASPX頁中,可以使用

      1 <%:Html.LinkWithDescription("測試鏈接1", "#", "這是測試鏈接1的描述")%>
      2 <%:Html.LinkWithDescription("測試鏈接2", "#", "這是測試鏈接2的描述")%>
      3 <%:Html.LinkWithDescription("測試鏈接3", "#", "這是測試鏈接3的描述")%>


      來調用上面的擴展方法,這里的鏈接標題、鏈接地址和描述等信息可以通過ViewData等方式傳入。在Action中寫
      1 /// <summary>
      2 /// Demo
      3 /// </summary>
      4 /// <returns>Demo視圖</returns>
      5 public ActionResult Demo()
      6 {
      7 // 創(chuàng)建鏈接信息列表
      8 List<LinkInfo> links = new List<LinkInfo>();
      9 links.Add(new LinkInfo { Description = "這是測試鏈接1的描述", Title = "測試鏈接1", Url = "#" });
      10 links.Add(new LinkInfo { Description = "這是測試鏈接2的描述", Title = "測試鏈接2", Url = "#" });
      11 links.Add(new LinkInfo { Description = "這是測試鏈接3的描述", Title = "測試鏈接3", Url = "#" });
      12
      13
      14 ViewData["Links"] = links;
      15
      16 return View();
      17 }


      在ASPX頁中寫

      1 <%List<LinkInfo> links=ViewData["Links"] as List<LinkInfo>;
      2 foreach (var link in links)
      3 { %>
      4 <%:Html.LinkWithDescription(link.Title, link.Url, link.Description)%>
      5 <%} %>
      在ASP.NET MVC應用程序的開發(fā)中,我們常碰到類似Html.Label或Html.TextBox這樣的代碼,它將在網頁上產生一個label或input標記。這些HtmlHelper的擴展方法有些像WebForm中的控件,只需傳入一些參數(shù)即可生成相應的HTML代碼。本文將介紹創(chuàng)建HtmlHelper的方法。

      Html.Textbox方法的返回值是MvcHtmlString,它生成了一些HTML代碼。創(chuàng)建HtmlHelper,就像在生成HTML代碼。下面以一個帶有簡要描述功能的鏈接HtmlHelper為例介紹創(chuàng)建自定義HtmlHelper的方法。它將顯示一個鏈接并在下方簡要介紹該與該鏈接內容有關的信息。在某些帶有簡要描述的項列表頁上可能會需要類似的功能。最后的結果預覽如下圖。


      上面使用了3次自定義的HtmlHelper,每次生成的代碼如下

      1 <div>
      2 <p class="LinkTitle"><a href="#">鏈接標題</a></p>
      3 <p class="LinkDescription">鏈接描述</p>
      4 </div>


      可能稍微有點復雜,因為有了標簽的嵌套。

      做好準備工作以后,新建一個靜態(tài)類LinkWithDescriptionExtensions,添加靜態(tài)方法LinkWithDescription,代碼如下

      1 /// <summary>
      2 /// 帶描述的鏈接擴展方法
      3 /// </summary>
      4 /// <param name="htmlHelper">要擴展的HtmlHelper類</param>
      5 /// <param name="title">標題</param>
      6 /// <param name="url">鏈接地址</param>
      7 /// <param name="description">描述</param>
      8 /// <returns>HTML代碼</returns>
      9 public static MvcHtmlString LinkWithDescription(this HtmlHelper htmlHelper, string title, string url, string description)
      10 {
      11 // 生成與標題鏈接有關的HTML代碼
      12 TagBuilder titleContainer = new TagBuilder("p"); // 標題鏈接容器p
      13 TagBuilder titleLink = new TagBuilder("a"); // 標題中的文字要有鏈接,所以包含在a標簽內
      14 titleLink.MergeAttribute("href", url); // 為a添加href屬性并指定鏈接地址
      15 titleLink.SetInnerText(title); // 標題文字
      16 titleContainer.InnerHtml = titleLink.ToString(); // 將a放到p中
      17 titleContainer.AddCssClass("LinkTitle"); // 為標題添加樣式
      18
      19 // 生成與鏈接描述有關的HTML代碼
      20 TagBuilder descriptionContainer = new TagBuilder("p"); // 連接描述容器p
      21 descriptionContainer.InnerHtml = description; // 描述文字
      22 descriptionContainer.AddCssClass("LinkDescription"); // 為描述添加樣式
      23
      24 // 將上述元素放入一個DIV中
      25 TagBuilder div = new TagBuilder("div");
      26 div.InnerHtml = string.Format("{0}{1}", titleContainer.ToString(), descriptionContainer.ToString());
      27
      28 // 返回生成的HTML代碼
      29 return MvcHtmlString.Create(div.ToString());
      30 }


      先理清結構再使用TagBuilder生成HTML代碼是比較方便的。這里也可以使用拼接字符串的方式來生成HTML代碼,只要最后得到所需的HTML代碼就可以,但是我個人不建議使用拼接字符串的方式,這樣不僅思維容易混亂而且容易出錯。使用TagBuilder既結構清晰,又不容易出錯。

      在ASPX頁中,可以使用

      1 <%:Html.LinkWithDescription("測試鏈接1", "#", "這是測試鏈接1的描述")%>
      2 <%:Html.LinkWithDescription("測試鏈接2", "#", "這是測試鏈接2的描述")%>
      3 <%:Html.LinkWithDescription("測試鏈接3", "#", "這是測試鏈接3的描述")%>


      來調用上面的擴展方法,這里的鏈接標題、鏈接地址和描述等信息可以通過ViewData等方式傳入。在Action中寫

      1 /// <summary>
      2 /// Demo
      3 /// </summary>
      4 /// <returns>Demo視圖</returns>
      5 public ActionResult Demo()
      6 {
      7 // 創(chuàng)建鏈接信息列表
      8 List<LinkInfo> links = new List<LinkInfo>();
      9 links.Add(new LinkInfo { Description = "這是測試鏈接1的描述", Title = "測試鏈接1", Url = "#" });
      10 links.Add(new LinkInfo { Description = "這是測試鏈接2的描述", Title = "測試鏈接2", Url = "#" });
      11 links.Add(new LinkInfo { Description = "這是測試鏈接3的描述", Title = "測試鏈接3", Url = "#" });
      12
      13
      14 ViewData["Links"] = links;
      15
      16 return View();
      17 }


      在ASPX頁中寫

      1 <%List<LinkInfo> links=ViewData["Links"] as List<LinkInfo>;
      2 foreach (var link in links)
      3 { %>
      4 <%:Html.LinkWithDescription(link.Title, link.Url, link.Description)%>
      5 <%} %>
      在ASP.NET MVC應用程序的開發(fā)中,我們常碰到類似Html.Label或Html.TextBox這樣的代碼,它將在網頁上產生一個label或input標記。這些HtmlHelper的擴展方法有些像WebForm中的控件,只需傳入一些參數(shù)即可生成相應的HTML代碼。本文將介紹創(chuàng)建HtmlHelper的方法。

      Html.Textbox方法的返回值是MvcHtmlString,它生成了一些HTML代碼。創(chuàng)建HtmlHelper,就像在生成HTML代碼。下面以一個帶有簡要描述功能的鏈接HtmlHelper為例介紹創(chuàng)建自定義HtmlHelper的方法。它將顯示一個鏈接并在下方簡要介紹該與該鏈接內容有關的信息。在某些帶有簡要描述的項列表頁上可能會需要類似的功能。最后的結果預覽如下圖。


      上面使用了3次自定義的HtmlHelper,每次生成的代碼如下

      1 <div>
      2 <p class="LinkTitle"><a href="#">鏈接標題</a></p>
      3 <p class="LinkDescription">鏈接描述</p>
      4 </div>


      可能稍微有點復雜,因為有了標簽的嵌套。

      做好準備工作以后,新建一個靜態(tài)類LinkWithDescriptionExtensions,添加靜態(tài)方法LinkWithDescription,代碼如下
      1 /// <summary>
      2 /// 帶描述的鏈接擴展方法
      3 /// </summary>
      4 /// <param name="htmlHelper">要擴展的HtmlHelper類</param>
      5 /// <param name="title">標題</param>
      6 /// <param name="url">鏈接地址</param>
      7 /// <param name="description">描述</param>
      8 /// <returns>HTML代碼</returns>
      9 public static MvcHtmlString LinkWithDescription(this HtmlHelper htmlHelper, string title, string url, string description)
      10 {
      11 // 生成與標題鏈接有關的HTML代碼
      12 TagBuilder titleContainer = new TagBuilder("p"); // 標題鏈接容器p
      13 TagBuilder titleLink = new TagBuilder("a"); // 標題中的文字要有鏈接,所以包含在a標簽內
      14 titleLink.MergeAttribute("href", url); // 為a添加href屬性并指定鏈接地址
      15 titleLink.SetInnerText(title); // 標題文字
      16 titleContainer.InnerHtml = titleLink.ToString(); // 將a放到p中
      17 titleContainer.AddCssClass("LinkTitle"); // 為標題添加樣式
      18
      19 // 生成與鏈接描述有關的HTML代碼
      20 TagBuilder descriptionContainer = new TagBuilder("p"); // 連接描述容器p
      21 descriptionContainer.InnerHtml = description; // 描述文字
      22 descriptionContainer.AddCssClass("LinkDescription"); // 為描述添加樣式
      23
      24 // 將上述元素放入一個DIV中
      25 TagBuilder div = new TagBuilder("div");
      26 div.InnerHtml = string.Format("{0}{1}", titleContainer.ToString(), descriptionContainer.ToString());
      27
      28 // 返回生成的HTML代碼
      29 return MvcHtmlString.Create(div.ToString());
      30 }

      先理清結構再使用TagBuilder生成HTML代碼是比較方便的。這里也可以使用拼接字符串的方式來生成HTML代碼,只要最后得到所需的HTML代碼就可以,但是我個人不建議使用拼接字符串的方式,這樣不僅思維容易混亂而且容易出錯。使用TagBuilder既結構清晰,又不容易出錯。

      在ASPX頁中,可以使用

      1 <%:Html.LinkWithDescription("測試鏈接1", "#", "這是測試鏈接1的描述")%>
      2 <%:Html.LinkWithDescription("測試鏈接2", "#", "這是測試鏈接2的描述")%>
      3 <%:Html.LinkWithDescription("測試鏈接3", "#", "這是測試鏈接3的描述")%>


      來調用上面的擴展方法,這里的鏈接標題、鏈接地址和描述等信息可以通過ViewData等方式傳入。在Action中寫

      1 /// <summary>
      2 /// Demo
      3 /// </summary>
      4 /// <returns>Demo視圖</returns>
      5 public ActionResult Demo()
      6 {
      7 // 創(chuàng)建鏈接信息列表
      8 List<LinkInfo> links = new List<LinkInfo>();
      9 links.Add(new LinkInfo { Description = "這是測試鏈接1的描述", Title = "測試鏈接1", Url = "#" });
      10 links.Add(new LinkInfo { Description = "這是測試鏈接2的描述", Title = "測試鏈接2", Url = "#" });
      11 links.Add(new LinkInfo { Description = "這是測試鏈接3的描述", Title = "測試鏈接3", Url = "#" });
      12
      13
      14 ViewData["Links"] = links;
      15
      16 return View();
      17 }


      在ASPX頁中寫
      1 <%List<LinkInfo> links=ViewData["Links"] as List<LinkInfo>;
      2 foreach (var link in links)
      3 { %>
      4 <%:Html.LinkWithDescription(link.Title, link.Url, link.Description)%>
      5 <%} %>

        相關評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字數(shù): 0/500 (您的評論需要經過審核才能顯示)