Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 JQuery对话框:如何使用服务器端错误/消息更新对话框_Asp.net Mvc 3_Jquery Dialog - Fatal编程技术网

Asp.net mvc 3 JQuery对话框:如何使用服务器端错误/消息更新对话框

Asp.net mvc 3 JQuery对话框:如何使用服务器端错误/消息更新对话框,asp.net-mvc-3,jquery-dialog,Asp.net Mvc 3,Jquery Dialog,我正在尝试使用JQuery对话框来弹出一个窗口,比如说,一个add按钮,它将显示一个包含Html.BeginForm()表单的对话框 通过使用对话框中的按钮,或者在其中放置对话框,我希望提交表单,然后取回表单,或者显示添加成功的更新,或者显示表单存在一些问题(例如:服务器端错误) 例如: 我认为我通过使用以下方法正确地进行了客户端验证: $.validator.unobtrusive.parse("#EventManage"); 但我的大问题实际上是服务器端验证/服务器端数据检索。我认为远程验

我正在尝试使用JQuery对话框来弹出一个窗口,比如说,一个add按钮,它将显示一个包含Html.BeginForm()表单的对话框

通过使用对话框中的按钮,或者在其中放置对话框,我希望提交表单,然后取回表单,或者显示添加成功的更新,或者显示表单存在一些问题(例如:服务器端错误)

例如:

我认为我通过使用以下方法正确地进行了客户端验证:

$.validator.unobtrusive.parse("#EventManage");
但我的大问题实际上是服务器端验证/服务器端数据检索。我认为远程验证对我不起作用,因为这种错误或多或少是基于表单的错误,而不是特定的文本框

我怎样才能让它工作?我真的毫无头绪,我已经在理论上到处尝试过让它发挥作用

目前,当对话框表单提交时,我有如下内容:

      "Save": function () {
                    $.validator.unobtrusive.parse("#EventManage");

                    if ($("#EventManage").valid()) {

                        $.ajax({
                            url: "/Home/EventSave",
                            type: 'POST',
                            data: $("#EventManage").serialize(),
                            success: function (result) {
                                $("#EventManage").html(result);
                            },
                            error: function (result) {
                                $("#EventManage").html(result);
                            }
                        });
                    }
                },
我没有得到我想要的,但是,对话框似乎没有更新到和更新部分视图,没有错误

实际上,我是在遵循这个例子,关于如何让它工作:

请给出一些关于如何完成这件事的提示:)

编辑:

我的EventManage部分表单:-

@model Harrods.Web.Models.EventManageModel


<div>
@using (Html.BeginForm("EventSave", "Home", FormMethod.Post, new { id = "EventManage", @class = "Dialog" }))
{
    @Html.ValidationSummary(false, "Please correct the errors below and try again:", new { @class = "ui-state-error ui-corner-all" })<br />
        <br />
        @Html.AntiForgeryToken()
        <fieldset>
        <legend>Event Details</legend>
        <br />
        @Html.Hidden("Id")
        <div class="editor-label-dialog">
            @Html.LabelFor(m => m.Event_Name)
        </div>
        <div class="editor-field-dialog">
            @Html.TextBoxFor(m => m.Event_Name)
            <br />
            @Html.ValidationMessageFor(m => m.Event_Name)
        </div>
        <p class="clear"></p>
        <br />
        <div class="editor-label-dialog">
            @Html.LabelFor(m => m.Event_Date)
        </div>
        <div class="editor-field-dialog">
            @Html.TextBoxFor(m => m.Event_Date)
            <br />
            @Html.ValidationMessageFor(m => m.Event_Date)
        </div>
        <p class="clear"></p>
        <br />
        <input type="submit" class="addNew" value="Save" />
        <div class='loading' style='display: none'><img src="@Url.Content("~/Assets/img/loading.gif")" title="Loading" /></div>
        </fieldset>
}
</div>
@model Harrods.Web.Models.EventManageModel
@使用(Html.BeginForm(“EventSave”、“Home”、FormMethod.Post、new{id=“EventManage”、@class=“Dialog”}))
{
@Html.ValidationSummary(false,“请更正下面的错误并重试:”,new{@class=“ui state error ui corner all”})

@Html.AntiForgeryToken() 活动详情
@Html.Hidden(“Id”) @LabelFor(m=>m.Event_Name) @Html.TextBoxFor(m=>m.Event_Name)
@Html.ValidationMessageFor(m=>m.Event_Name)


@LabelFor(m=>m.Event\u Date) @Html.TextBoxFor(m=>m.Event\u Date)
@Html.ValidationMessageFor(m=>m.Event_Date)


}
EDIT2

似乎我是为了>>成功:函数(结果)而得到它的

但它没有进入错误:函数(结果)


即使已经有错误。

为了显示非特定于某些给定输入且已添加到modelstate的错误消息,您可以使用
验证摘要
帮助程序。因此,请将以下内容放在部分中的某个位置:

@Html.ValidationSummary(true)

为了显示非特定于某些给定输入且已添加到modelstate的错误消息,可以使用
ValidationSummary
helper。因此,请将以下内容放在部分中的某个位置:

@Html.ValidationSummary(true)

如果modelstate有错误,则不调用.ajax错误:如果ajax请求失败,则调用它

你要做的是检查结果,如果有错误就检查。这可以通过多种方式完成,比如Json

如果EventSave成功,则返回Json对象;如果EventSave失败,则返回partialView。然后,您可以检查它是否成功并处理这些案例

这里有一个例子

JS代码:

"Save": function () {
                $.validator.unobtrusive.parse("#CreateGroup")
                if ($("#CreateGroup").valid()) {
                    $.ajax({
                        url: "/Participant/CreateGroup",
                        type: "POST",
                        data: $("#CreateGroup").serialize(),
                        success: function (result) {
                            if (result.result == "success") {
                                $("#GroupAddDialog").dialog("close");
                                LoadList();
                            }
                            else {
                                $("#GroupAddDialog").html(result);
                            }
                        }
                    });
                }
和控制器代码:

if(Success)
{
     return Json(new
            {
               result = "success"
            });
}
ModelState.AddModelError("", "Unable to save in db");
return PartialView("_CreateGroup", model);

如果modelstate有错误,则不调用.ajax错误:如果ajax请求失败,则调用它

你要做的是检查结果,如果有错误就检查。这可以通过多种方式完成,比如Json

如果EventSave成功,则返回Json对象;如果EventSave失败,则返回partialView。然后,您可以检查它是否成功并处理这些案例

这里有一个例子

JS代码:

"Save": function () {
                $.validator.unobtrusive.parse("#CreateGroup")
                if ($("#CreateGroup").valid()) {
                    $.ajax({
                        url: "/Participant/CreateGroup",
                        type: "POST",
                        data: $("#CreateGroup").serialize(),
                        success: function (result) {
                            if (result.result == "success") {
                                $("#GroupAddDialog").dialog("close");
                                LoadList();
                            }
                            else {
                                $("#GroupAddDialog").html(result);
                            }
                        }
                    });
                }
和控制器代码:

if(Success)
{
     return Json(new
            {
               result = "success"
            });
}
ModelState.AddModelError("", "Unable to save in db");
return PartialView("_CreateGroup", model);

@RicL,它是否在
EventManage
partial中?另外,您是否确保从服务器向modelstate添加了一个错误?然后,您是否确保在客户机上调用了success AJAX回调,并且更新了DOM的正确部分?1)它位于。2) 是的,我直接添加了ModelState.AddModelError。3) 4)没有真正理解(请原谅我的幼稚)@RicL,既然你已经发布了你的代码,我看到你使用了
Html.ValidationSummary(false,
。使用
@Html.ValidationSummary(true)
有什么区别吗?将其设置为true将不会显示错误消息。奇怪的是,无论如何,我似乎使其工作,从而使其进入成功,但不会出现错误。是否有任何原因说明即使存在ModelState错误,它也会进入成功状态?@RicL,只有在控制器操作失败时才会调用错误回调。例如,如果它抛出一个e异常。您没有引发任何异常。您只是返回了一个HTTP状态代码为200的部分视图。因此调用了成功回调。@RicL,它是否在
EventManage
partial中?您是否确保服务器向modelstate添加了一个错误?然后您是否确保成功的AJAX回调已在客户端上调用,并且DOM的正确部分已更新?1)它位于。2) 是的,我直接添加了ModelState.AddModelError。3) 4)没有真正理解(请原谅我的幼稚)@RicL,既然你已经发布了你的代码,我看到你使用了
Html.ValidationSummary(false,
。使用
@Html.ValidationSummary(true)
有什么区别吗?将其设置为true将不会显示错误消息。奇怪的是,无论如何,我似乎使其工作,从而使其进入成功,但不会出现错误。是否有任何原因说明即使存在ModelState错误,它也会进入成功状态?@RicL,只有在控制器操作失败时才会调用错误回调。例如,如果它抛出一个e您没有抛出任何异常。您只是返回一个HTTP状态代码为200的部分视图。因此,成功回调被称为.Open