在MVC5中,我使用EditorForModel和EditorTemplate在表中显示来自我的模型的IEnumberable数据,用户可以在其中进行编辑。 MVC似乎以'<row number>.<model property>'
的格式命名控件的id字段。
例如,表第四行上的复选框控件@Html.CheckBoxFor(x => Model.Bold...
的ID为[3].BoldText
。
当我尝试使用JQuery通过选择器$('#[3].BoldText')
获取该控件的值时,由于[或句点,JQuery引发了我怀疑的错误。有什么办法可以使用EditorForModel设置命名格式?
或者,有没有办法使用这种格式的ID来获取Javascript中该复选框的值?
我尝试了以下任何一项都无法工作...
$('#[3].BoldText')
$("input[id='[3].BoldText']")
document.getElementById('[3].BoldText')
答案 0 :(得分:1)
您的代码将不会生成任何id
属性-您看到的是name
属性。默认情况下,HtmlHelpers
用.
(下划线)替换[
中的]
,name
和_
字符。但是由于符合HTML-4规范,因此将是无效的,因此省略了id
属性。
有关详细说明,请参见Razor: If model is List<> then @Html.LabelFor creates empty “for” field。
您可以更改选择器以使用name
属性
$("input[name='[3].BoldText']")
或者,使用包含您的collection属性的视图模型,以及一个EditorTemplate
或for
循环来生成html,以便您的html看起来像(假设该属性名为{{1} })
Items
,以便您随后可以使用<input type="checkbox" name="Items[0].BoldText" id="Items_0__BoldText" ... />
选择器
id