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 回答
0
    $.validator.unobtrusive.parse($('#' + popupID));
于 2015-06-11T20:52:41.763 回答