ajax.ActionLink の後の目立たない検証に問題があり、フォームが正しく送信され、ajax が div ターゲットを置き換えると、クライアント側の検証が作成されません。
私はこれをビューに持っています:
@using (Ajax.BeginForm("Action", "Controller", new { area = "Area" }, new AjaxOptions { HttpMethod = "post", InsertionMode = InsertionMode.Replace, UpdateTargetId = "divTarget" }))
{
//html stuff....
<li>
<label><br/></label>
<div class="perfil_datos_botones">
<input type="submit" value="Crear cita" id="enviar">
@Ajax.ActionLink("Volver", "Action", "Controller", new { area = "Area" }, new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "divTarget", OnComplete = "ValidarForm('target')" }, new { @class = "links_botones" })
</div>
</li>
</ul>
}
OnComplete 関数:
function ValidarForm(sel) {
var selector = "#" + new String(sel);
$.validator.unobtrusive.parse(selector);
}
私はこれをビューに置きます:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
そしてこれはレイアウトで:
@Scripts.Render("~/bundles/jqueryval_noajax")
このバンドルは、ajax.unobtrusive.js なしで jquery-validation プラグインをレンダリングします。ビューに複数の投稿が生成されるためです。
私は OnSuccess で関数を使用しようとしましたが、バリデーターは「目立たないフィールドは未定義です」という例外をスローします。
ajax.BeginForm または ajax.ActionLink を使用するすべての partialView で、クライアント側の検証をリロードする必要があります。
編集1:
私はそれ$.validator
が見つかりundefined
、ajax get by jqueryでajax.actionLinkを変更しましたが、それでもエラーが発生します