ASP.NET MVC中自定义一个HtmlHelper方法(asp.net,htmlhelper,mvc,开发技术)

时间:2024-05-04 15:49:22 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

以Label()方法为例,查看Label方法的定义:

internalstaticMvcHtmlStringLabelHelper(HtmlHelperhtml,ModelMetadatametadata,stringhtmlFieldName,stringlabelText=null,IDictionary<string,object>htmlAttributes=null){stringresolvedLabelText=labelText??metadata.DisplayName??metadata.PropertyName??htmlFieldName.Split('.').Last();if(String.IsNullOrEmpty(resolvedLabelText)){returnMvcHtmlString.Empty;}TagBuildertag=newTagBuilder("label");tag.Attributes.Add("for",TagBuilder.CreateSanitizedId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));tag.SetInnerText(resolvedLabelText);tag.MergeAttributes(htmlAttributes,replaceExisting:true);returntag.ToMvcHtmlString(TagRenderMode.Normal);}

这是MVC的源码中对Label()扩展方法的定义,我们可以参考MVC中源码定义扩展方法的方式自定义一个扩展方法。

下面以span标签为例进行扩展,扩展方法定义如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Mvc;namespaceMvcHtmlHelper.Helper{///<summary>///HTML的扩展类///</summary>publicstaticclassHtmlHelperExt{///<summary>///用C#代码自定义一个span标签的扩展方法///</summary>///<paramname="htlper"></param>///<paramname="id"></param>///<paramname="name"></param>///<paramname="style"></param>///<paramname="message"></param>///<returns></returns>publicstaticMvcHtmlStringMessager(thisHtmlHelperhtlper,stringid,stringname,stringstyle,objectmessage){if(message!=null){TagBuilderbuilder=newTagBuilder("span");builder.MergeAttribute("style",style);//定义样式builder.MergeAttribute("id",id);//定义Idbuilder.MergeAttribute("name",name);//定义namebuilder.SetInnerText(message.ToString());//ToMvcHtmlString是在TagBuilderExtensions扩展类中定义的returnbuilder.ToMvcHtmlString(TagRenderMode.Normal);}returnMvcHtmlString.Empty;}}}

TagBuilderExtensions扩展方法定义如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Mvc;namespaceMvcHtmlHelper.Helper{publicstaticclassTagBuilderExtensions{publicstaticMvcHtmlStringToMvcHtmlString(thisTagBuildertagBuilder,TagRenderModerenderMode){System.Diagnostics.Debug.Assert(tagBuilder!=null);returnnewMvcHtmlString(tagBuilder.ToString(renderMode));}}}

视图页面代码如下:

@usingMvcHtmlHelper.Helper;@{ViewBag.Title="HomePage";}<divclass="jumbotron"><h2>ASP.NET</h2><pclass="lead">ASP.NETisafreewebframeworkforbuildinggreatWebsitesandWebapplicationsusingHTML,CSSandJavaScript.</p><p><ahref="https://asp.net"rel="externalnofollow"class="btnbtn-primarybtn-lg">Learnmore&raquo;</a></p><p><!--使用自定义的Messager方法-->@Html.Messager("lblMessage","lblMessage","color:red;font-weight:bold;","自定义span标签")</p></div><divclass="row"><divclass="col-md-4"><h3>Gettingstarted</h3><p>ASP.NETMVCgivesyouapowerful,patterns-basedwaytobuilddynamicwebsitesthatenablesacleanseparationofconcernsandgivesyoufullcontrolovermarkupforenjoyable,agiledevelopment.</p><p><aclass="btnbtn-default"href="https://go.microsoft.com/fwlink/?LinkId=301865"rel="externalnofollow">Learnmore&raquo;</a></p></div><divclass="col-md-4"><h3>Getmorelibraries</h3><p>NuGetisafreeVisualStudioextensionthatmakesiteasytoadd,remove,andupdatelibrariesandtoolsinVisualStudioprojects.</p><p><aclass="btnbtn-default"href="https://go.microsoft.com/fwlink/?LinkId=301866"rel="externalnofollow">Learnmore&raquo;</a></p></div><divclass="col-md-4"><h3>WebHosting</h3><p>Youcaneasilyfindawebhostingcompanythatofferstherightmixoffeaturesandpriceforyourapplications.</p><p><aclass="btnbtn-default"href="https://go.microsoft.com/fwlink/?LinkId=301867"rel="externalnofollow">Learnmore&raquo;</a></p></div></div>

运行结果如下:

ASP.NET MVC中自定义一个HtmlHelper方法

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:ASP.NET MVC中自定义一个HtmlHelper方法的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:python中添加列表元素append(),extend()及insert()怎么用下一篇:

12 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18