我正在使用MVC3 WebGrid,并希望将“data-xxx”形式的自定义属性添加到<table>
呈现的WebGrid.GetHtml()
元素中。
我尝试按如下方式执行此操作:
grid.GetHtml(...
htmlAttributes: new { data_xxx = "value" }
);
然而,这呈现为:
<table ... data_xxx="value">
而不是预期的:
<table ... data-xxx="value">
即。与其他MVC助手不同,它不会用连字符替换属性名称中的下划线。
在使用Reflector进行一些探索后,似乎:
WebGrid.GetHtml()
调用System.Web.WebPages.Html.ObjectToDictionary
将匿名属性对象转换为字典。与其他助手使用的方法System.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes
不同,这不会将“_”替换为“ - ”。
与大多数其他MVC助手不同,WebGrid.GetHtml()
没有带IDictionary<string, object>
的重载,所以我不能通过这种方式指定属性来解决这个问题。
对我来说这看起来像个错误,我已将其提交给Connect:
有关解决方法的任何建议吗?或者它是否在MVC4中修复了?
答案 0 :(得分:2)
感谢您报告此问题:
昨天在CodePlex解决问题610&amp; 575。
https://aspnetwebstack.codeplex.com/workitem/610
https://aspnetwebstack.codeplex.com/workitem/575
您可以试用nightly bits。