ASP.NET MVC 编辑器用于模型 ID 命名



在 ASP.NET MVC 5中,我使用EditorForModelEditorTemplate在用户可以编辑的表中显示模型中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属性。默认情况下,HtmlHelpersname中的.[]字符替换为_(下划线(。但是由于符合 HTML-4 规范,这将无效,因此省略了id属性。

有关详细说明,请参阅 Razor:如果模型为 List<>则 @Html.LabelFor 创建空的"for"字段。

您可以更改选择器以使用name属性

$("input[name='[3].BoldText']")

或者,使用包含集合属性的视图模型以及EditorTemplatefor循环来生成 html,以便您的 html 看起来像(假设该属性名为Items(

<input type="checkbox" name="Items[0].BoldText" id="Items_0__BoldText" ... />

以便您可以使用id选择器

$('#Items_0__BoldText')

最新更新