使用MVC3和JQuery动态地保存DataAnnotations

时间:2016-03-08 16:33:51

标签: javascript jquery asp.net-mvc asp.net-mvc-3

我遇到类似这样的问题:Using MVC and JQuery to dynamically & consistently add values to a table,但区别在于:

我有桌子,我正在克隆最后一行(保持相同的格式):

var $tableBody = $('#record').find("tbody");
$trLast = $tableBody.find("tr:last");
$trNew = $trLast.clone();
$trLast.after($trNew);

`

成功创建行,但验证绑定到第一行(inputsselectstextarea

检查elment,显示:

<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。 有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

首先,当您使用动态内容时,必须在克隆行后将JQuery验证添加到新内容中:

$.validator.unobtrusive.parse($("form"));

第二,属性&#34; data-valmsg-for&#34;,跨越&#34; field-validation-valid&#34; class,必须与属性相同&#34; name&#34;你表中每一行的相应输入。

因此,例如,包含三行的表必须如下所示:

<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>

发布表单时,正确的模型绑定也需要最后一个。