2011-08-29补充:
传送门
上文中有这样一句话:
Eg: new { data_abc = "def" }
will be generated as data-abc="def"
.
也就是说,用下划线做html的匿名属性名称,会自动生成为横线的html元素的属性名称。
以下是原问题内容:
我们在Asp.net MVC中使用Html.Textbox等扩展的时候,经常要用到HttpAttributes的匿名类型参数。而在前台数据验证、绑定时经常用到类似于“data-content"、"data-val"等属性。
整个Tag看起来像这样子:
<input class="text-box single-line" data-val="true" data-val-required="名称 字段是必需的。" id="Name" name="Name" type="text" value="张三" />
问题就这在这里,我在MVC中,希望用
Html.TextBox("Name","张三", new { data-val = "false" });
来强制指定data-val为“false”(注:这只是一个例子,并不代表我只是针对这个名为”data-val"的属性。)
事实上,VS2010 IDE会提示如下错误:
只能从不带参数的简单名或限定名中推断匿名类型成员的名称。
言下之意就是不能使用"-"符号(减号)。
如何解决?
确实不行,但我记得TextBox扩展方法有一个重载是接受一个字典的,用字典就行
看了下源码
property.Name.Replace('_', '-'), property.GetValue(htmlAttributes)
要用_代替...
此乃正解,源码在哪里看的?