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