这篇文章主要为大家展示了“asp.net mvc中自定义一个htmlHelper方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.net MVC中自定义一个HtmlH
这篇文章主要为大家展示了“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 »</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 »</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 »</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 »</a></p> </div></div>
运行结果如下:
以上是“ASP.NET MVC中自定义一个HtmlHelper方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!
--结束END--
本文标题: ASP.NET MVC中自定义一个HtmlHelper方法
本文链接: https://lsjlt.com/news/324259.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0