在 ASP.NET MVC 5中,我使用EditorForModel
和EditorTemplate
在用户可以编辑的表中显示模型中IEnumerable
数据。 ASP.NET MVC 似乎以'<row number>.<model property>'
格式命名控件的 id 字段。
例如,表第 4 行上的复选框控件@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')
您的代码不会生成任何id
属性 - 您看到的是name
属性。默认情况下,HtmlHelpers
将name
中的.
、[
和]
字符替换为_
(下划线(。但是由于符合 HTML-4 规范,这将无效,因此省略了id
属性。
有关详细说明,请参阅 Razor:如果模型为 List<>则 @Html.LabelFor 创建空的"for"字段。
您可以更改选择器以使用name
属性
$("input[name='[3].BoldText']")
或者,使用包含集合属性的视图模型以及EditorTemplate
或for
循环来生成 html,以便您的 html 看起来像(假设该属性名为Items
(
<input type="checkbox" name="Items[0].BoldText" id="Items_0__BoldText" ... />
以便您可以使用id
选择器
$('#Items_0__BoldText')