首页
学习
活动
专区
工具
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将不再包含句点,而是使用下划线替换。

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

相关·内容

没有搜到相关的视频

领券