将自定义属性添加到WebGrid呈现的表中

时间:2012-10-15 16:41:16

标签: .net asp.net-mvc-3 webgrid

我正在使用MVC3 WebGrid,并希望将“data-xxx”形式的自定义属性添加到<table>呈现的WebGrid.GetHtml()元素中。

我尝试按如下方式执行此操作:

grid.GetHtml(...
    htmlAttributes: new { data_xxx = "value" }
);

然而,这呈现为:

<table ... data_xxx="value">

而不是预期的:

<table ... data-xxx="value">

即。与其他MVC助手不同,它不会用连字符替换属性名称中的下划线。

在使用Reflector进行一些探索后,似乎:

  1. WebGrid.GetHtml()调用System.Web.WebPages.Html.ObjectToDictionary将匿名属性对象转换为字典。与其他助手使用的方法System.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes不同,这不会将“_”替换为“ - ”。

  2. 与大多数其他MVC助手不同,WebGrid.GetHtml()没有带IDictionary<string, object>的重载,所以我不能通过这种方式指定属性来解决这个问题。

  3. 对我来说这看起来像个错误,我已将其提交给Connect:

    http://connect.microsoft.com/VisualStudio/feedback/details/767456/webgrid-gethtml-helper-does-not-allow-data-attributes-to-be-set

    有关解决方法的任何建议吗?或者它是否在MVC4中修复了?

1 个答案:

答案 0 :(得分:2)

感谢您报告此问题:

昨天在CodePlex解决问题610&amp; 575。

https://aspnetwebstack.codeplex.com/workitem/610

https://aspnetwebstack.codeplex.com/workitem/575

您可以试用nightly bits