返回顶部
首页 > 资讯 > 精选 >ASP.NET MVC中自定义一个HtmlHelper方法
  • 160
分享到

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

2023-06-29 10:06:48 160人浏览 安东尼
摘要

这篇文章主要为大家展示了“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 &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方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: ASP.NET MVC中自定义一个HtmlHelper方法

本文链接: https://lsjlt.com/news/324259.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ASP.NET MVC中自定义一个HtmlHelper方法
    这篇文章主要为大家展示了“ASP.NET MVC中自定义一个HtmlHelper方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET MVC中自定义一个HtmlH...
    99+
    2023-06-29
  • ASP.NET Core MVC自定义Tag Helpers用法介绍
    介绍 在之前的内容中,我们谈到了Tag Helpers,我们还谈到了 caching Tag Helpers和form Tag Helpers。 通过创建自定义Tag He...
    99+
    2024-04-02
  • ASP.NET MVC自定义操作过滤器
    目录一、操作过滤器1、定义2、案例2.1、创建自定义操作过滤器2.2、新建控制器二、结果过滤器1、定义2、案例三、案例1、记录操作1.1、创建实体类1.2、创建日志类1.3、修改操作...
    99+
    2024-04-02
  • ASP.NET Core MVC如何自定义Tag Helpers
    这篇文章主要为大家展示了“ASP.NET Core MVC如何自定义Tag Helpers”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET C...
    99+
    2023-06-29
  • Android中自定义一个View的方法详解
    本文实例讲述了Android中自定义一个View的方法。分享给大家供大家参考,具体如下: Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此...
    99+
    2022-06-06
    自定义 view 方法 Android
  • 怎么在android中自定义一个PagerAdapter方法
    这篇文章给大家介绍怎么在android中自定义一个PagerAdapter方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先,如果继承pageradapter,至少必须重写下面的四个方法  &n...
    99+
    2023-05-30
    android pageradapter
  • ASP.NET MVC自定义异常过滤器使用案例
    目录一、需求二、案例1、创建工具类1.1、创建日志工具类1.2、创建网络工具类2、创建自定义异常类3、创建控制器4、测试在上一篇文章中讲解了自定义异常过滤器,这篇文章会结合工作中的真...
    99+
    2024-04-02
  • Keras中如何定义一个自定义的层
    要定义一个自定义的层,需要继承keras.layers.Layer类,并重写__init__和call方法。下面是一个简单的示例: ...
    99+
    2024-03-14
    Keras
  • Asp.net MVC 中Ajax的使用方法
    本篇内容介绍了“Asp.net MVC 中Ajax的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • 一文了解自定义MVC框架实现
    目录一、让中央控制器动态加载存储子控制器二、参数传递封装优化三、对于方法执行结果转发重定向优化四、框架配置可变一、让中央控制器动态加载存储子控制器 上期回顾,我们说明了自定义MVC工...
    99+
    2024-04-02
  • javascript怎么定义一个方法
    这篇文章主要介绍了javascript怎么定义一个方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。定义方法的方式:1、定义式,先定义方法再调用,语法“function 函数...
    99+
    2023-06-15
  • Java 中怎么自定义一个LRU 缓存算法
    今天就跟大家聊聊有关Java 中怎么自定义一个LRU 缓存算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。背景LinkedHashMap继承自HashMap,内部提供了一个remo...
    99+
    2023-06-17
  • ASP.NET配置文件中自定义节点
    节处理程序解释并处理 Web.config 文件特定部分中 XML 配置元素中定义的设置,并根据配置设置返回适当的配置对象。 处理程序类返回的配置对象可以是任何数据结构;它不限于任何...
    99+
    2024-04-02
  • ASP.NET中怎么创建自定义操作
    这期内容当中小编将会给大家带来有关ASP.NET中怎么创建自定义操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。ASP.NET安装部署之创建自定义操作1.在解决方案资源管理器中选择“Test Insta...
    99+
    2023-06-18
  • WordPress自定义多个边栏的方法
    在主题的function.php文件中,可以找到形如如下内容的语句:复制代码代码如下:if ( function_exists(‘register_sidebar’) ) register_...
    99+
    2022-06-12
    WordPress 自定义边栏
  • 怎么在Android中自定义一个控件
    怎么在Android中自定义一个控件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码class SleepDayChart(context: Contex...
    99+
    2023-06-14
  • Spring MVC中怎么自定义404 Not Found页面
    这篇文章给大家介绍Spring MVC中怎么自定义404 Not Found页面,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在WEB-INF的web.xml里添加一个新的区域:意思是一旦有404错误发生时,显示res...
    99+
    2023-06-02
  • ASP.NET Core使用自定义日志中间件
    这个日志框架使用的是ASP.NET Core的NLog,用来记录每次请求信息和返回信息。 1.首先创建一个Web应用项目,我选择的是MVC模板: 2.使用NuGet添加Micros...
    99+
    2024-04-02
  • ASP.NET 中怎么利用DataGrid自定义分页
    这期内容当中小编将会给大家带来有关ASP.NET 中怎么利用DataGrid自定义分页,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。ASP.NET DataGrid自定义分页代码1using S...
    99+
    2023-06-17
  • Torch如何自定义一个Dataset类
    要自定义一个Dataset类,可以继承自torch.utils.data.Dataset,并实现其中的__len__和__getit...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作