中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET?MVC中自定義一個HtmlHelper方法

發布時間:2022-03-08 16:16:12 來源:億速云 閱讀:132 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“ASP.NET MVC中自定義一個HtmlHelper方法”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ASP.NET MVC中自定義一個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">
    <h2>ASP.NET</h2>
    <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 href="https://asp.net" 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">
        <h3>Getting started</h3>
        <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" href="https://go.microsoft.com/fwlink/?LinkId=301865" rel="external nofollow" >Learn more &raquo;</a></p>
    </div>
    <div class="col-md-4">
        <h3>Get more libraries</h3>
        <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" href="https://go.microsoft.com/fwlink/?LinkId=301866" rel="external nofollow" >Learn more &raquo;</a></p>
    </div>
    <div class="col-md-4">
        <h3>Web Hosting</h3>
        <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" href="https://go.microsoft.com/fwlink/?LinkId=301867" rel="external nofollow" >Learn more &raquo;</a></p>
    </div>
</div>

運行結果如下:

ASP.NET?MVC中自定義一個HtmlHelper方法

以上是“ASP.NET MVC中自定義一個HtmlHelper方法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴国县| 进贤县| 射阳县| 定日县| 岑巩县| 日土县| 唐河县| 长子县| 通山县| 汽车| 腾冲县| 大安市| 尚志市| 南投县| 巩义市| 巴南区| 河间市| 屏南县| 沅陵县| 志丹县| 延川县| 师宗县| 得荣县| 海南省| 南岸区| 肥西县| 上栗县| 太谷县| 大洼县| 桃园市| 阳朔县| 星子县| 财经| 乐山市| 高邮市| 长治县| 桂平市| 南汇区| 那坡县| 天津市| 苍山县|