在MVC中回发后保持jquery对话框打开

在MVC中回发后保持jquery对话框打开,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我还在学习MVC 显示包含编辑、详细信息、删除链接的员工网格 在编辑时,单击: 我正在使用下面的代码打开一个jQuery对话框,并调用一个MVC操作。 操作URL位于加载函数的URL参数中 $(".edit").on("click", function (e) { alert("editing"); var url = $(this).attr('href'); $("#dialog-edit").dialog({

我还在学习MVC 显示包含编辑、详细信息、删除链接的员工网格

在编辑时,单击: 我正在使用下面的代码打开一个jQuery对话框,并调用一个MVC操作。 操作URL位于加载函数的URL参数中

 $(".edit").on("click", function (e) {
            alert("editing");
            var url = $(this).attr('href');
            $("#dialog-edit").dialog({
                title: 'Edit Details',
                autoOpen: false,
                resizable: false,
                height: 455,
                width: 550,
                show: { effect: 'drop', direction: "up" },
                modal: true,
                draggable: true,
                open: function (event, ui) {
                    $(this).load(url);

                },
                close: function (event, ui) {
                    $(this).dialog('close');
                }
            });

            $("#dialog-edit").dialog('open');
            return false;
        });  
我做了一些服务器端验证。更改员工详细信息后单击“更新”按钮(在模式对话框中打开,上面有“编辑”链接)。 无论服务器端验证失败还是通过,模态对话框都会关闭,我知道这在回发中是很自然的


我想知道,如果服务器端验证失败并向用户显示原因,如何正确地再次打开jquery模式对话框。

在响应中使用一个标志,以知道是否需要打开对话框并显示错误,但是:这不是一个好的做法


如果您使用jquery执行GET,然后处理响应并在没有错误的情况下关闭对话框,可能会更好。

请告知以下解决方案是否存在问题:

我修改了jQuery对话框代码,以进行ajax调用来更新详细信息,而不是提交表单

另外,修改了Action方法以返回JsonResult而不是ActionResult

  $(".edit").on("click", function (e) {
        alert("editing");
        var url = $(this).attr('href');
        $("#dialog-edit").dialog({
            title: 'Edit Details',
            autoOpen: false,
            resizable: false,
            height: 455,
            width: 550,
            show: { effect: 'drop', direction: "up" },
            modal: true,
            draggable: true,
            buttons: {
                "Save" : function(){
                    $.post("Student/Edit", $("form").serialize(), function (data) {
                        if (data) {
                            alert("data saved");
                            $("#dialog-edit").dialog('close');
                            window.location.href = "Student/Index";
                        }
                        else {
                            alert("not saved");
                        }

                    });
                }
            },
            open: function (event, ui) {
                $(this).load(url);

            },
            close: function (event, ui) {
                $(this).dialog('close');
            }
        });

        $("#dialog-edit").dialog('open');
        return false;
    });