欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET MVC擴展HtmlHelper方法

 更新時間:2022年03月08日 11:54:50   作者:.NET開發(fā)菜鳥  
這篇文章介紹了ASP.NET MVC擴展HtmlHelper的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

上一篇文章的最后,列出了一些常見的HtmlHelper的方法,這些都是ASP.NET MVC已經(jīng)定義好的,如果我們想自己定義一個HtmlHelper方法可以嗎?答案是肯定的,那么如何自定義一個HtmlHelper方法呢?

以Label()方法為例,查看Label方法的定義:

internal static MvcHtmlString LabelHelper(HtmlHelper html, ModelMetadata metadata, string htmlFieldName, string labelText = null, IDictionary<string, object> htmlAttributes = null)
{
            string resolvedLabelText = labelText ?? metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
            if (String.IsNullOrEmpty(resolvedLabelText))
            {
                return MvcHtmlString.Empty;
            }

            TagBuilder tag = new TagBuilder("label");
            tag.Attributes.Add("for", TagBuilder.CreateSanitizedId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
            tag.SetInnerText(resolvedLabelText);
            tag.MergeAttributes(htmlAttributes, replaceExisting: true);
            return tag.ToMvcHtmlString(TagRenderMode.Normal);
}

這是MVC的源碼中對Label()擴展方法的定義,我們可以參考MVC中源碼定義擴展方法的方式自定義一個擴展方法。

下面以span標簽為例進行擴展,擴展方法定義如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcHtmlHelper.Helper
{
    /// <summary>
    /// HTML的擴展類
    /// </summary>
    public static class HtmlHelperExt
    {
        /// <summary>
        /// 用C#代碼自定義一個span標簽的擴展方法
        /// </summary>
        /// <param name="htlper"></param>
        /// <param name="id"></param>
        /// <param name="name"></param>
        /// <param name="style"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public static MvcHtmlString Messager(this HtmlHelper htlper, string id,string name, string style, object message)
        {
            if (message != null)
            {
                TagBuilder builder = new TagBuilder("span");
                builder.MergeAttribute("style", style); //定義樣式
                builder.MergeAttribute("id", id);     // 定義Id
                builder.MergeAttribute("name", name);  // 定義name
                builder.SetInnerText(message.ToString());
                //ToMvcHtmlString是在TagBuilderExtensions擴展類中定義的
                return builder.ToMvcHtmlString(TagRenderMode.Normal);
            }
            return MvcHtmlString.Empty;
        }
    }
}

TagBuilderExtensions擴展方法定義如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcHtmlHelper.Helper
{
    public static class TagBuilderExtensions
    {
        public static MvcHtmlString ToMvcHtmlString(this TagBuilder tagBuilder, TagRenderMode renderMode)
        {
            System.Diagnostics.Debug.Assert(tagBuilder != null);
            return new MvcHtmlString(tagBuilder.ToString(renderMode));
        }
    }
}

 視圖頁面代碼如下:

@using MvcHtmlHelper.Helper;
@{
    ViewBag.Title = "Home Page";
}

<div class="jumbotron">
    <h1>ASP.NET</h1>
    <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
    <p><a  rel="external nofollow"  class="btn btn-primary btn-lg">Learn more &raquo;</a></p>
    <p>
        <!--使用自定義的Messager方法-->
        @Html.Messager("lblMessage", "lblMessage", "color:red;font-weight:bold;", "自定義span標簽")
    </p>
</div>

<div class="row">
    <div class="col-md-4">
        <h2>Getting started</h2>
        <p>
            ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
            enables a clean separation of concerns and gives you full control over markup
            for enjoyable, agile development.
        </p>
        <p><a class="btn btn-default"  rel="external nofollow" >Learn more &raquo;</a></p>
    </div>
    <div class="col-md-4">
        <h2>Get more libraries</h2>
        <p>NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.</p>
        <p><a class="btn btn-default"  rel="external nofollow" >Learn more &raquo;</a></p>
    </div>
    <div class="col-md-4">
        <h2>Web Hosting</h2>
        <p>You can easily find a web hosting company that offers the right mix of features and price for your applications.</p>
        <p><a class="btn btn-default"  rel="external nofollow" >Learn more &raquo;</a></p>
    </div>
</div>

運行結(jié)果如下:

到此這篇關(guān)于ASP.NET MVC擴展HtmlHelper方法的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 運用.net core中實例講解RabbitMQ

    運用.net core中實例講解RabbitMQ

    RabbitMQ是實現(xiàn)了高級消息隊列協(xié)議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件),本文詳細講解了RabbitMQ以及運用.net core中實例講解其6中模式,感興趣的小伙伴一起來學(xué)習(xí)吧
    2021-09-09
  • ASP.NET 定制簡單的錯誤處理頁面實現(xiàn)代碼

    ASP.NET 定制簡單的錯誤處理頁面實現(xiàn)代碼

    通常web應(yīng)用程序在發(fā)布后,為了給用戶一個友好界面和使用體驗,都會在錯誤發(fā)生時跳轉(zhuǎn)至一個自定義的錯誤頁面,而不是asp.net向用戶暴露出來的詳細的異常列表。
    2010-01-01
  • Asp.net中通過Button打開另一個的frm

    Asp.net中通過Button打開另一個的frm

    本文通過實例代碼給大家介紹了asp.net中通過button打開另一個frm的方法,非常不錯,需要的朋友參考下吧
    2016-12-12
  • Asp.net SignalR 讓實時通訊變得如此簡單

    Asp.net SignalR 讓實時通訊變得如此簡單

    下面小編就為大家分享一篇Asp.net SignalR 讓實時通訊變得如此簡單,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 詳解ASP.NET驗證碼的生成方法

    詳解ASP.NET驗證碼的生成方法

    這篇文章主要為大家詳細介紹了ASP.NET驗證碼的生成方法,以及ASP.NET生成驗證碼的實現(xiàn)步驟和思路,感興趣的小伙伴們可以參考一下
    2016-05-05
  • .NET?6?跨服務(wù)器聯(lián)表查詢操作MySql、Oracle、SqlServer等相互聯(lián)表

    .NET?6?跨服務(wù)器聯(lián)表查詢操作MySql、Oracle、SqlServer等相互聯(lián)表

    這篇文章主要介紹了.NET?6?跨服務(wù)器聯(lián)表查詢,?MySql、Oracle、SqlServer等相互聯(lián)表,在這里給大家普及下什么是多庫架構(gòu)ORM就是說一個對象可以同時操作和管理多個數(shù)據(jù)庫 我們稱為多庫架構(gòu),本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • Entity?Framework?Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫

    Entity?Framework?Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫

    這篇文章介紹了Entity?Framework?Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 淺談ASP.NET中最簡單的自定義控件

    淺談ASP.NET中最簡單的自定義控件

    這篇文章主要簡單介紹了ASP.NET中最簡單的自定義控件,以及核心代碼示例,需要的朋友可以參考下
    2015-01-01
  • MVC4制作網(wǎng)站教程第三章 修改用戶組操作3.3

    MVC4制作網(wǎng)站教程第三章 修改用戶組操作3.3

    這篇文章主要為大家詳細介紹了MVC4制作網(wǎng)站教程,修改用戶組功能的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 使用ASP.Net?WebAPI構(gòu)建REST服務(wù)

    使用ASP.Net?WebAPI構(gòu)建REST服務(wù)

    這篇文章介紹了使用ASP.Net?WebAPI構(gòu)建REST服務(wù)的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論