首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

阻止ASP.NET MVC在Html Helper ID中使用下划线替换句点

在ASP.NET MVC中,使用Html Helper时,ID中的下划线可能会被替换为句点。这是因为在ASP.NET MVC中,ID中的下划线被视为一种特殊字符,用于表示嵌套的属性。例如,ID "foo_bar" 将被视为属性 "foo" 的子属性 "bar"。

为了避免这种情况,可以使用以下方法之一:

  1. 使用驼峰命名法代替下划线命名法。例如,将 "foo_bar" 改为 "fooBar"。
  2. 使用ModelMetadata.PropertyName或Expression来生成ID。例如:
代码语言:csharp
复制
@Html.TextBoxFor(m => m.Foo_Bar, new { id = Html.IdFor(m => m.Foo_Bar).Replace(".", "_") })
  1. 创建自定义Html Helper,以自动处理ID中的下划线。例如:
代码语言:csharp
复制
public static MvcHtmlString MyTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
    var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
    var id = metadata.PropertyName.Replace(".", "_");
    var name = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(id);
    var value = metadata.Model;
    var attributes = new RouteValueDictionary();
    attributes.Add("id", id);
    attributes.Add("name", name);
    attributes.Add("value", value);
    return MvcHtmlString.Create(string.Format<input type=\"text\" {0} />", TagBuilder.Create(attributes).ToString(TagRenderMode.SelfClosing)));
}

然后在视图中使用自定义Html Helper:

代码语言:csharp
复制
@Html.MyTextBoxFor(m => m.Foo_Bar)

这样,生成的HTML元素的ID将不再包含句点,而是使用下划线替换。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core MVC 视图

ASP.NET Core MVC中视图的知识和ASP.NET MVC有很多相似之处,学习难度较低。以下内容主要体现了编程模块化的思想,模块化才应是我们关注的重点。...ASP.NET Core默认的布局文件是位于/Views/Shared文件夹下的_Layout.cshtml文件: ?...文件的作用域是当前目录及子目录 Tag Helper Tag Helper可以让服务器端代码参与到Razor文件创建和渲染HTML元素的工作。...声明局部视图 局部视图名通常以下划线_开头,下划线主要用于易于辨识局部视图文件。注意一点,渲染局部视图时,不会执行_ViewStart.cshtml文件的代码。其余与普通视图一样。...⚠️局部视图中定义的section只对当前局部视图可见 使用局部视图 引用局部视图文件而不带扩展名cshtml时,MVC框架,会从以下路径中加载局部视图文件,优先级从上而下依次降低: /Areas

2.2K40
  • ASP.NET MVC使用Bootstrap系列(5)——创建ASP.NET MVC Bootstrap Helpers

    序言 ASP.NET MVC允许开发者创建自定义的HTML Helpers,不管是使用静态方法还是扩展方法。一个HTML Helper本质上其实是输出一段HTML字符串。...内置的HTML Helpers ASP.NET MVC内置了若干标准HTML Helpers,通过@HTML来调用这些方法视图引擎解析、渲染输出HTML内容,这允许开发者多个视图中重用公共的方法。...ASP.NET MVC中最简单创建Bootstrap helpers是通过@helper语法来实现。...内置的ASP.NET MVC helper(@HTML)是基于扩展方法的,我们可以再对上述的静态方法进行升级——使用扩展方法来创建Bootstrap helpers。...创建自动闭合的Helpers ASP.NET MVC,内置的@HTML.BeginForm() helper就是一个自动闭合的helper

    1.4K80

    ASP.NET MVC编程——视图

    基本规则 1)变量 @后直接变量即可 2)代码块 为使用表达式或多行代码,@后跟大括号将多行代码包括大括号 3)“+” 对于加号连接的两个字符串变量或属性,使用小括号将他们括起来 4)插入HTML或文字...每一行前面加上“@:” 5)使用注释 使用@*和*@将要注释的部分包起来 6)用@@页面上显示@ @using 一个View引入此页所需程序集的命名空间。..., new { @class = "loginForm" })) { //其他代码 } HTML辅助方法会将下划线渲染为连字符,因此要表达含有连字符的特性,那么使用下划线 Html.BeginForm...ASP.NET MVC4 Web编程 2.Jon Galloway/Phil Haack/Brad Wilson/K....Scott Allen,孙远帅/邹权译  ASP.NET MVC4 高级编程(第四版) 3.黄保翕,ASP.NET MVC4开发指南 4.蒋金楠,ASP.NET MVC4框架揭秘 5.https://www.asp.net

    3K100

    ASP.NET MVC 5 - 给数据模型添加校验器

    您可以一个地方 (模型类) 以声明的方式指定验证规则,这个规则会在应用程序的任何地方执行。 让我们看看您如何在本电影应用程序使用此验证支持。...Html.EditorFor helper 输出为Movie的每个属性的元素。...此Helper旁边是对Html.ValidationMessageFor方法的调用。这两个Helper方法将处理由控制器传递到视图的模型对象(在这里是,Movie对象)。...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8. ...ASP.NET MVC 5 - 使用Wijmo MVC 5模板1分钟创建应用 希望这些文章对感兴趣的朋友有所帮助,另附上PDF版的汇总文档: 《ASP.NET MVC 5 入门指南》PDF版

    9K70

    ASP.NET MVC 重点教程一周年版 第九回 HtmlHelper

    " /> 由前篇我们所讲的Helper演化,我们思考,对于这种代码我们是不是也可以用一个Helper来自动绑定数据呢 这当然是可以的,ASP.NET MVC提供了一个HtmlHelper用于生成有数据绑定的...的属性,所以还是难以维护,幸好ASP.NET MVC为我们提供了一个Helper,我们可以通过以下两种方式生成一个Form: 1: <%using(Html.BeginForm("index",...3.2表单元素 ASP.NET MVC提供了多种表单元素的Helper。...注意:因为一般情况下是不会绑定数据的所以ASP.NET MVC并未提供此Helper(曾经提供过preview2之前)。...比如 “重典”那么我们可以按以下方式 1: 如果数据是从数据库读取,即得到数据是从Action获取的,那么我们可以Action中使用ViewData

    85110

    流畅地HtmlHelper-Asp.Net MVC

    今天抛开 Fluent NHibernate 不谈,我们来谈谈 Asp.Net MVCMVC的View,我们经常会使用HtmlHelper来生成各种html代码(可能描述不太清楚看代码吧,呵呵)...html代码: " />...因为也是刚尝试接触MVC,看了一下它的源代码,HtmlHelper的扩展方法都在 System.Web.Mvc.Html 命名空间内,大概看了下InputExtensions的代码,大致是根据传入的类型...的话,你的控件id会把"."替换成"_"的。 说干就干,不是很难,其实就是解析一个表达式树,取出它属性的Name就Ok了。介绍Lambda表达式树的文章很多,这里就不作介绍了。...说实在,MVC好像很多地方要使用那种硬编码,实在不爽,所以要改造一个自己适合的环境还真不容易啊。老赵最近弄了个MVCPath,要不就一起放进去?吼吼 本文章演示代码下载

    57080

    ASP.NET MVC 重点教程一周年版 第八回 Helper之演化

    凡事出现必有原因 就像Filter,它是为了解决一类的Action之前或之后执行统一的代码而产生的。 而Helper则是为了方便View的开发而产生的。...下面我们来解决几个问题,来看看Helper是怎么演化出来的。 起 题目:如何在View写一个超级连接连接到主页?...可以应对变化,可是还有一个问题就是href=””这种方式VS是很难智能感知和调试的,所以要有一种很好的调试方式于是就产生了最初的HtmlHelper 这样就可以方便智能感知及调试了,而且代码也比较干净 结 上述的浅见描述了为何出现Helper,希望新学习ASP.NET MVC的朋友有所帮助。...ASP.NET MVC Framework 系列

    31820

    ASP.NET MVC 5 -从控制器访问数据模型

    本节,您将创建一个新的MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示浏览器里。...例如,Details.cshtml模板,每部电影的字段,通过代码传递了DisplayNameFor 和DisplayFor HTML Helper通过强类型的Model对象。...使用 ComponentOne Studio ASP.NET MVC 这款轻量级控件,工作效率大大提高的同时,工作量也会大大减少。...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8. ...ASP.NET MVC 5 - 使用Wijmo MVC 5模板1分钟创建应用 希望这些文章对感兴趣的朋友有所帮助,另附上PDF版的汇总文档: 《ASP.NET MVC 5 入门指南》PDF版

    5.9K50

    Asp.Net MVC4入门指南(8):给数据模型添加校验器

    您可以一个地方 (模型类) 以声明的方式指定验证规则,这个规则会在应用程序的任何地方执行。 让我们看看您如何在本电影应用程序使用此验证支持。...文件 (地址https://github.com/jquery/globalize) JavaScript 可以使用 Globalize.parseFloat。...我们的电影示例,我们使用了验证,当客户端检测到错误时,form不会被post到服务器;所以第二个Create方法永远不会被调用。...它用来为以上两个操作方法来显示初始的form,同时验证出错时来重新显示视图。 请注意,代码如何使用Html.EditorFor helper 输出为Movie的每个属性的元素。...此Helper旁边是对Html.ValidationMessageFor方法的调用。这两个Helper方法将处理由控制器传递到视图的模型对象(在这里是,Movie对象)。

    4.6K100

    ASP.NET Core MVC 概述

    强类型视图通常使用 ViewModel 类型,旨在包含要在该视图上显示的数据。 控制器从模型创建并填充 ViewModel 实例。 备注 可通过多种方法使用 MVC 体系结构模式的应用组织模型。...它们使用 Razor 视图引擎 HTML 标记嵌入 .NET 代码。 视图中应该有最小逻辑,并且其中的任何逻辑都必须与展示内容相关。...控制器职责 控制器 (C) 是处理用户交互、使用模型并最终选择要呈现的视图的组件。 MVC 应用程序,视图仅显示信息;控制器处理并响应用户输入和交互。...模型类型上指定的验证逻辑作为非介入式注释添加到呈现的视图,并使用 jQuery 验证浏览器强制执行。 依赖关系注入 ASP.NET Core 内置有对依赖关系注入 (DI) 的支持。...区域是应用程序内的一个 MVC 结构。 MVC 项目中,模型、控制器和视图等逻辑组件保存在不同的文件夹MVC 使用命名约定来创建这些组件之间的关系。

    6.4K20
    领券