0
我使用ASP.NET MVC 2,但是我不认为我听说过这个被固定在MVC 3或4,但无论如何:GetFullHtmlFieldId返回不正确的id属性值
这是我的测试视图代码:
<br />
<%= Html.LabelFor(m => m.FieldFoo) %>
<%= Html.TextBoxFor(m => m.FieldFoo) %>
<br />
<%= Html.LabelFor(m => m.CustomFieldValues[0].Value) %>
<%= Html.TextBoxFor(m => m.CustomFieldValues[0].Value) %>
而这就是呈现:
<br />
<label for="FieldFoo">Foo?</label>
<input id="FieldFoo" name="FieldFoo" type="text" value="foo" />
<br />
<label for="CustomFieldValues[0]_Value">Value</label>
<input id="CustomFieldValues_0__Value" name="CustomFieldValues[0].Value" type="text" value="bar" />
现货的区别:索引属性CustomFieldValues
是不是有其[
和对于for=""
属性,将个字符替换为_
。为什么?
我踏进LabelFor
代码中看到它调用html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));
而MVC的内部InputHelper
具有使用TagBuilder.CreateSanitizedId()
这可以解释为什么它变得不同id=""
属性值其自身的逻辑。
MVC 2有没有解决这个问题的方法?
为接受,因为它是正确的,但在我来说,我使用反射来调用MVC自己正确的ID生成方法,而不是重新实现它自己,我会庆祝你的答案。 – Dai 2013-03-25 08:37:11
@戴,请包括什么为你工作。 – xr280xr 2014-09-12 14:52:42