使用 MVC 3 和 JQuery 动态维护 DataAnnotations
Using MVC3 and JQuery to dynamically and mantain the DataAnnotations
我有类似的问题:Using MVC and JQuery to dynamically & consistently add values to a table,但不同的是:
我有 table 并且我正在克隆最后一行(以保持相同的格式):
var $tableBody = $('#record').find("tbody");
$trLast = $tableBody.find("tr:last");
$trNew = $trLast.clone();
$trLast.after($trNew);
`
行已成功创建,但验证绑定到第一行(inputs
、selects
和 textarea
)
检查元素,显示:
<td>
// Code generated with the jquery .clone()
<input data-val="true" data-val-required="Es necesario agregar una fecha." id="Salidas_0__Fecha" name="Salidas[1].Fecha" type="datetime" value="" autocomplete="off" class="hasDatepicker input-validation-error">
<span class="field-validation-valid" data-valmsg-for="Salidas[1].Fecha" data-valmsg-replace="true"></span>
</td>
但是 field-validation-valid
没有绑定到 input
。
有办法做到这一点吗?
首先,当你玩动态内容时,你必须在克隆行后向新内容添加JQuery验证:
$.validator.unobtrusive.parse($("form"));
其次,属性 "data-valmsg-for",在 "field-validation-valid" class 的跨度上,必须与你的每一行中他相应输入的属性 "name" 相同 table.
因此,例如,具有三行的 table 必须如下所示:
<td>
<input data-val="true" data-val-required="Es necesario agregar una fecha." id="Salidas_0__Fecha" name="Salidas[0].Fecha" type="datetime" value="" autocomplete="off" class="hasDatepicker input-validation-error">
<span class="field-validation-valid" data-valmsg-for="Salidas[0].Fecha" data-valmsg-replace="true"></span>
</td>
<td>
<input data-val="true" data-val-required="Es necesario agregar una fecha." id="Salidas_1__Fecha" name="Salidas[1].Fecha" type="datetime" value="" autocomplete="off" class="hasDatepicker input-validation-error">
<span class="field-validation-valid" data-valmsg-for="Salidas[1].Fecha" data-valmsg-replace="true"></span>
</td>
<td>
<input data-val="true" data-val-required="Es necesario agregar una fecha." id="Salidas_2__Fecha" name="Salidas[2].Fecha" type="datetime" value="" autocomplete="off" class="hasDatepicker input-validation-error">
<span class="field-validation-valid" data-valmsg-for="Salidas[2].Fecha" data-valmsg-replace="true"></span>
</td>
最后一个也是发布表单时正确模型绑定所需要的。
我有类似的问题:Using MVC and JQuery to dynamically & consistently add values to a table,但不同的是:
我有 table 并且我正在克隆最后一行(以保持相同的格式):
var $tableBody = $('#record').find("tbody");
$trLast = $tableBody.find("tr:last");
$trNew = $trLast.clone();
$trLast.after($trNew);
`
行已成功创建,但验证绑定到第一行(inputs
、selects
和 textarea
)
检查元素,显示:
<td>
// Code generated with the jquery .clone()
<input data-val="true" data-val-required="Es necesario agregar una fecha." id="Salidas_0__Fecha" name="Salidas[1].Fecha" type="datetime" value="" autocomplete="off" class="hasDatepicker input-validation-error">
<span class="field-validation-valid" data-valmsg-for="Salidas[1].Fecha" data-valmsg-replace="true"></span>
</td>
但是 field-validation-valid
没有绑定到 input
。
有办法做到这一点吗?
首先,当你玩动态内容时,你必须在克隆行后向新内容添加JQuery验证:
$.validator.unobtrusive.parse($("form"));
其次,属性 "data-valmsg-for",在 "field-validation-valid" class 的跨度上,必须与你的每一行中他相应输入的属性 "name" 相同 table.
因此,例如,具有三行的 table 必须如下所示:
<td>
<input data-val="true" data-val-required="Es necesario agregar una fecha." id="Salidas_0__Fecha" name="Salidas[0].Fecha" type="datetime" value="" autocomplete="off" class="hasDatepicker input-validation-error">
<span class="field-validation-valid" data-valmsg-for="Salidas[0].Fecha" data-valmsg-replace="true"></span>
</td>
<td>
<input data-val="true" data-val-required="Es necesario agregar una fecha." id="Salidas_1__Fecha" name="Salidas[1].Fecha" type="datetime" value="" autocomplete="off" class="hasDatepicker input-validation-error">
<span class="field-validation-valid" data-valmsg-for="Salidas[1].Fecha" data-valmsg-replace="true"></span>
</td>
<td>
<input data-val="true" data-val-required="Es necesario agregar una fecha." id="Salidas_2__Fecha" name="Salidas[2].Fecha" type="datetime" value="" autocomplete="off" class="hasDatepicker input-validation-error">
<span class="field-validation-valid" data-valmsg-for="Salidas[2].Fecha" data-valmsg-replace="true"></span>
</td>
最后一个也是发布表单时正确模型绑定所需要的。