【问题标题】:C# ASP.NET MVC4 TextBoxFor-extension not replacing underscores with hyphensC# ASP.NET MVC4 TextBoxFor-extension 没有用连字符替换下划线
【发布时间】:2015-05-18 20:56:12
【问题描述】:

我的 MVC4 应用程序中的 TextBoxFor 扩展有某种过载。该方法如下所示:

public static MvcHtmlString FormGroupTextBoxFor<TModel, TProperty>(this MyHelper<TModel> myHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes = null)

MyHelper 内部有一个 HtmlHelper 属性,用于我没有重载的“普通”MVC 内容。

在我创建的方法中

var routeValueDict = new RouteValueDictionary(htmlAttributes) {{"class", "form-control"}};

因为我需要在这里添加一些类。

下一个电话是:

var propertyInput = myHelper.HtmlInternal.TextBoxFor(expression, routeValueDict);

调用默认的TextBoxFor()方法。

当我像这样调用分机时

@My.FormGroupTextBoxFor(m => m.Name, new { @data_blur_update = "title", @data_blur_target_id = string.Format("eventName{0}", eventId) })

它不会在呈现的 HTML 中将 data_blur_update 替换为 data-blur-update。为什么?

我在这里错过了什么?

【问题讨论】:

  • 为什么不直接data-??
  • @EhsanSajjad:截至数据-??不会编译:Invalid anonymous type member declarator
  • remove @ 不需要,可能是这个原因
  • @EhsanSajjad:同样的错误。事件如果我添加some_data = "SomeValue"它仍然不会呈现some-data
  • 你能展示你完整的辅助方法吗?

标签: c# asp.net-mvc-4 html5-data htmlextensions


【解决方案1】:

我变了

var routeValueDict = new RouteValueDictionary(htmlAttributes) {{"class", "form-control"}};

var routeValueDict = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
routeValueDict.Add("class", "form-control");

然后它将包含带有连字符而不是下划线的正确属性。

【讨论】:

    猜你喜欢
    • 2018-05-20
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多