返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NETMVC扩展HtmlHelper方法
  • 798
分享到

ASP.NETMVC扩展HtmlHelper方法

2024-04-02 19:04:59 798人浏览 独家记忆
摘要

在上一篇文章的最后,列出了一些常见的htmlHelper的方法,这些都是asp.net mvc已经定义好的,如果我们想自己定义一个HtmlHelper方法可以吗?答案是肯定的,那么如

在上一篇文章的最后,列出了一些常见的htmlHelper的方法,这些都是asp.net mvc已经定义好的,如果我们想自己定义一个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 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">
        <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" href="Https://Go.microsoft.com/fwlink/?LinkId=301865" 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" href="https://go.microsoft.com/fwlink/?LinkId=301866" 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" href="https://go.microsoft.com/fwlink/?LinkId=301867" rel="external nofollow" >Learn more &raquo;</a></p>
    </div>
</div>

运行结果如下:

到此这篇关于ASP.NET MVC扩展HtmlHelper方法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: ASP.NETMVC扩展HtmlHelper方法

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

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

猜你喜欢
  • ASP.NETMVC扩展HtmlHelper方法
    在上一篇文章的最后,列出了一些常见的HtmlHelper的方法,这些都是ASP.NET MVC已经定义好的,如果我们想自己定义一个HtmlHelper方法可以吗?答案是肯定的,那么如...
    99+
    2024-04-02
  • golang 扩展方法
    Golang是一种近年来兴起的编程语言,由于其高效的并发处理和简洁的语法,越来越多的开发者开始使用Golang。然而,Golang在面向对象编程(OOP)方面缺少一些常见的特性,例如扩展方法(extension method)。在本文中,我...
    99+
    2023-05-18
  • springboot扩展MVC的方法
    springboot扩展MVC 自定义 config -> SpringMvcConfig.java 下边就是扩展springMVC的模板: 第一步:@Configurati...
    99+
    2024-04-02
  • C# 扩展方法详解
    目录先来做一下MCSD试题;总结先来做一下MCSD试题;     答案是C; 题目是问怎么定义扩展方法; 下面来看一下扩展方法; 扩展方法是C# ...
    99+
    2024-04-02
  • jQuery如何写扩展方法
    小编给大家分享一下jQuery如何写扩展方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!扩展jQuery对象本身。用来在jQu...
    99+
    2024-04-02
  • Linq扩展方法是什么
    这篇文章主要讲解了“Linq扩展方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linq扩展方法是什么”吧!LINQ使查询成为了.NET中头等的编程概念,被查询的数据可以是XML(L...
    99+
    2023-06-17
  • es6数组扩展的方法
    本篇内容介绍了“es6数组扩展的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.扩展运算符含义: 扩展运算符,三个点(...),将一个...
    99+
    2023-06-04
  • ASP.NET MVC中自定义一个HtmlHelper方法
    这篇文章主要为大家展示了“ASP.NET MVC中自定义一个HtmlHelper方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET MVC中自定义一个HtmlH...
    99+
    2023-06-29
  • Android实现扩展Menu的方法
    本文实例讲述了Android实现扩展Menu的方法。分享给大家供大家参考。具体如下: 1. java代码: package com.tabmenu; import andro...
    99+
    2022-06-06
    方法 Android
  • php7安装pdo_oci扩展的方法
    小编给大家分享一下php7安装pdo_oci扩展的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php7安装pdo_oci扩展的方法:1、在官网下载并安装oracle客户端;2、进入php的源码安装包,执行【/usr/...
    99+
    2023-06-07
  • 如何实现C#扩展方法
    这篇文章将为大家详细讲解有关如何实现C#扩展方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在我们的编程生涯中我们要使用很多很多类库,这些类库有的是我们自己开发的,我们有她的代码,有的是第三方发布的,我...
    99+
    2023-06-17
  • wdcp安装php扩展的方法
    这篇文章主要讲解了“wdcp安装php扩展的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“wdcp安装php扩展的方法”吧!wdcp安装php扩展的方法:首先确定下载需要安装的php版本...
    99+
    2023-06-20
  • Linux swap分区的扩展方法
    这篇文章主要介绍“Linux swap分区的扩展方法”,在日常操作中,相信很多人在Linux swap分区的扩展方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux swap分区的扩展方法”的疑惑有所...
    99+
    2023-06-16
  • linux扩展/dev/sda1分区方法
    一、准备 扩展虚拟机的磁盘空间         在虚拟机关闭状态下,点击虚拟机>设置>硬盘>扩展:扩展自己需要的容量。 二、开始扩展 idriver@ubuntu:~$ su         // 1....
    99+
    2023-09-10
    linux 运维 服务器
  • 探讨Golang中的扩展方法
    Go语言(Golang)是一门快速高效的编程语言,自从发布以来已经成为了许多开发者的首选语言。它提供了高效的内存管理,简单直观的语法和特性,而且编译速度也极快。此外,Golang还提供了一些很棒的构建工具和库,使得开发人员可以更容易地完成任...
    99+
    2023-05-14
  • Java2 HTML扩展方法是什么
    本文小编为大家详细介绍“Java2 HTML扩展方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java2 HTML扩展方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。打开Java2htmlta...
    99+
    2023-06-03
  • Zookeeper扩展的方法是什么
    这篇文章主要介绍“Zookeeper扩展的方法是什么”,在日常操作中,相信很多人在Zookeeper扩展的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Zookeeper扩展的方法是什么”的疑惑有所...
    99+
    2023-06-05
  • php5.3安装redis扩展的方法
    本文将为大家详细介绍“php5.3安装redis扩展的方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php5.3安装redis扩展的方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下...
    99+
    2023-06-06
  • php7安装yaf扩展的方法
    这篇“php7安装yaf扩展的方法”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“php7安装yaf扩展的方法”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入...
    99+
    2023-06-06
  • Linux扩展LVM空间的方法
    这篇文章主要讲解了“Linux扩展LVM空间的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux扩展LVM空间的方法”吧!增加硬盘;或扩展系统硬盘大小;对新增加的硬盘进行分区、格式...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作