如何覆盖 @Html.LabelFor 模板?

2023-12-02

我有一个简单的字段表单

<div class="field fade-label">
    @Html.LabelFor(model => model.Register.UserName)
    @Html.TextBoxFor(model => model.Register.UserName)
</div>

结果是:

<div class="field fade-label">
    <label for="Register_UserName">Username (used to identify all services, from 4 to 30 chars)</label>
    <input type="text" value="" name="Register.UserName" id="Register_UserName">
</div>

但我想要那个LabelFor代码附加一个<span>在里面,这样我最终可以得到:

<label for="Register_UserName">
    <span>Username (used to identify all services, from 4 to 30 chars)</span>
</label>

我怎样才能做到这一点?

All examples use EditorTemplates但这是一个LabelFor.


您可以通过创建自己的 HTML 帮助器来完成此操作。

http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs

您可以通过下载 ASP.Net MVC 的源代码来查看 LabelFor 的代码,并将其修改为自定义帮助程序。


Answer添加者巴莱桑德雷

public static class LabelExtensions
{
    public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
    {
        return LabelFor(html, expression, new RouteValueDictionary(htmlAttributes));
    }
    public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IDictionary<string, object> htmlAttributes)
    {
        ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
        string htmlFieldName = ExpressionHelper.GetExpressionText(expression);
        string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
        if (String.IsNullOrEmpty(labelText))
        {
            return MvcHtmlString.Empty;
        }

        TagBuilder tag = new TagBuilder("label");
        tag.MergeAttributes(htmlAttributes);
        tag.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));

        TagBuilder span = new TagBuilder("span");
        span.SetInnerText(labelText);

        // assign <span> to <label> inner html
        tag.InnerHtml = span.ToString(TagRenderMode.Normal);

        return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何覆盖 @Html.LabelFor 模板? 的相关文章

随机推荐

  • C# 引用和指针有什么区别?

    我不太明白 C 引用和指针之间的区别 它们都指向记忆中的某个地方 不是吗 我能弄清楚的唯一区别是指针不那么聪明 不能指向堆上的任何东西 可以免于垃圾回收 并且只能引用结构或基类型 我问这个问题的原因之一是 人们认为人们需要很好地理解指针 我
  • 在curl中发送json文件并使用plumber在R中接收它

    我需要发送一个包含多个值的 json 文件并使用水管工在 R 中接收它 我尝试过这个 但它似乎不起作用 library rjson install packages rjson get predict post predict functi
  • Jquery 实时复制另一个文本框值

    我想获取另一个文本框的值并将其实时输入到另一个文本框中 如何检测 TEXT 3 是否已更改 如果 TEXT 3 值更改 则必须将其输入到 TEXT 4 为了您的方便 这里是代码和演示 HTML
  • 使用PHP查询MDB文件,并返回JSON

    我有一个 Microsoft Access 数据库 我正在尝试使用 PHP 查询该表 并输出有效的 JSON 我有一个 MSSQL 数据库的等效代码 我正在尝试让我的代码做同样的事情 但只是针对 Access 数据库 这是MSSQL代码 m
  • Angular2 嵌套 formGroups - formArrays 和模板绑定

    问题是这样的 我有一个带有嵌套表单组的复杂表单 这是它的 简化 结构 gt MyForm formGroup gt Whatever01 formControl input gt Whatever02 formControl input g
  • Bundler如何卸载冲突的依赖项

    我正在尝试执行vagrant plugin install vagrant vbguest在我的 Mac 上 ProductName Mac OS X ProductVersion 10 12 6 BuildVersion 16G29 但之
  • 分页时出现 SQL 错误

    大家好 我们有一个完美工作的关系控制器网页 index admin 但在添加分页后 它全部崩溃了 想出 SQLSTATE 42S22 Column not found 1054 Unknown column Relationship sen
  • 我想在 Nuxt.js 中的 Vuex 中使用 window.localStorage

    我开发 nuxt js 应用程序 重点是登录和注销 我们将开发 JWT 系统的登录 您必须保持 vuex 登录状态 但是 当我刷新页面时 vuex 被初始化 我读过 gitvuex 持久状态 但很难理解如何初始化和设置它 在 nuxt js
  • WPF 使用数据绑定显示格式化的多行文本

    我需要使用 WPF 数据绑定显示以下内容 值发生变化 标题必须是粗体 信息行是普通文本 如果给定标头的信息不存在 我想折叠该部分 包括标头 我更喜欢所有数据 标题和信息项 都位于一个格式化字符串中 该字符串可以在我想要的位置换行 Heade
  • 我们应该支持哪些 Xamarin ABI

    目前 我认为我们的 Xamarin Android 应用程序 PCL 非常庞大 即使在发布模式下也是如此 我怀疑这是由于支持的架构造成的 目前我们已将它们全部选中 有谁知道我们是否必须选择所有这些 我们也根本不使用 Android NDK
  • jQuery - .always() 回调触发得太快

    我正在开发一个客户端 JS 应用程序 该应用程序应该读取 CSV 文件 每行进行一些 API 调用 然后将结果写回 CSV 我所关注的部分是如何编排请求并在所有完成后触发一个函数 这是我到目前为止所拥有的 var requests loop
  • 使用“on”和“by”从两个 data.table 计算新变量

    我怎么不能用by当通过两个计算新变量时data tables合并后 示例数据集 library data table set seed 1 Example datasets dt1 lt data table id 1 10 var rno
  • 安卓中的OBB是什么

    我不知道如何使用OBB 有演示吗 我不知道它的优点 在android2 3以下的设备上使用会抛出异常吗 Detail 我读过一些有关它的文章 但我仍然不太了解 人们使用它似乎只是因为应用程序大小限制为 50mb 使用它可以将其扩大到4GB
  • 如何使用 scipy odeint 求解这个微分方程?

    我正在尝试使用 scipy odeint 求解以下微分方程 但没有取得太大成功 import numpy as np from scipy misc import derivative from scipy integrate import
  • 根据 Python str.format() 文档,什么是有效键

    我是 Python 新手 刚刚阅读了 Python 文档中的以下部分6 1 3 格式化字符串语法 Because arg name is not quote delimited it is not possible to specify a
  • 无法从 mainBundle 中删除文件

    我在从主包中删除文件时遇到问题 当我从 XCODE 4 2 中的支持文件中手动删除它们时 当我运行我的应用程序时它们仍然出现 我已经使用 显示包内容 打开了应用程序文件 并从那里手动删除了它们 当我运行应用程序时它们仍然显示 我已从模拟器和
  • 如何检查docker容器内是否正在运行进程?

    更新1 我有一个shell 它会更改某些功能中的TCP内核参数 但现在我需要使这个shell在Docker容器中运行 这意味着 shell需要知道它正在容器内运行并停止配置内核 现在我不知道如何实现这一点 这是内容 proc self cg
  • 如何将名称附加到 R 中输出数据帧的“列名称”?

    我知道我可以使用更改列的名称 colnames x lt c Column1 Column 2 Column 3 Column 4 如果我有 A lt Apple B lt Banana 我应该怎么做才能使输出数据帧的名称具有这样的名称 C
  • 如何裁剪多边形外的区域?

    我想使 PHP 中预定义多边形之外的任何内容变得透明 假设您有头部的形状 那么图像的其他任何内容都应该被分箱 预先非常感谢 为了让自己清楚 这是我一直在编写的一些代码 dat dirname FILE foto time png img i
  • 如何覆盖 @Html.LabelFor 模板?

    我有一个简单的字段表单 div class field fade label Html LabelFor model gt model Register UserName Html TextBoxFor model gt model Reg