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

时间:2017-06-22 08:56:13

标签: jquery asp.net-mvc

我还在学习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模式对话框的正确方法,如果服务器端验证失败,并显示错误消息显示用户的原因。

2 个答案:

答案 0 :(得分:0)

在回复中使用一个标记,知道您是否需要打开对话框并显示错误,但是:这不是一个好习惯

如果使用jquery进行GET,那么可能会更好,然后如果没有错误,您可以处理响应并关闭对话框。

答案 1 :(得分:0)

如果以下解决方案存在问题,请告诉我:

我修改了我的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;
    });