0

PartialView を使用してモーダル ポップアップ フォームを読み込んでいます

コード

 $("#modalContainer").load('@Url.Action("NewRefill","Car",new {car=@Model.Id})');

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

                        $("#addNewEntryModal").modal('show');

私のコントローラーで私が持っている

[HttpPost]
        public ActionResult NewRefill(Car car,int car)
        {
            if (ModelState.IsValid)
            {


            }
            return Json(new { Success = false });

        }

これはモーダルポップアップです。送信するたびに、自動的に新しいページに転送されます。私がやりたいことは、モーダルを開いたままにして、発生したエラーを表示することです。Submit イベントにバインドしようとしましたが、無駄に停止しました。赤い境界線が表示されるため、検証は機能しますが、転送され、Success=false が表示されます

4

2 に答える 2

4

jQueryの控えめな検証を適切な場所で解析していません。成功コールバック内でパーシャルをロードしたら、これを行う必要があります。

var url = '@Url.Action("NewRefill", "Car", new {car = @Model.Id})';
$('#modalContainer').load(url, function() {
    $.validator.unobtrusive.parse($("#modalContainer form"));
    $("#addNewEntryModal").modal('show');
});

また、このパーシャル内でAjax.BeginFormヘルパーを使用してフォームを生成している場合はjQuery.unobtrusive-ajax.js、これが機能するようにページにスクリプトが含まれていることを確認してください。そして、それが通常のHtml.BeginForm場合、通常のリクエストではなくAJAXリクエストで送信する場合は、AJAXifyする必要があります。

var url = '@Url.Action("NewRefill", "Car", new {car = @Model.Id})';
$('#modalContainer').load(url, function() {
    var form = $("#modalContainer form");
    $.validator.unobtrusive.parse();
    $("#addNewEntryModal").modal('show');
    form.submit(function() {
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function(result) {
                ...
            }
        });
        return false;
    });
});
于 2013-02-02T23:26:55.913 に答える