如何在MVC中点击按钮添加确认弹出窗口

时间:2017-06-02 02:17:11

标签: jquery asp.net-mvc asp.net-ajax

这就是我想要实现的目标。

1)当用户点击“保存”时,会弹出一个弹出窗口 2)弹出窗口会说,你想要执行XYZ吗?是的继续,没有回到屏幕,没有 3)如果没有,只需关闭弹出窗口即可。我有jquery函数来检测是否单击了取消按钮,弹出窗口将被关闭。 4)如果是,请调用ajax执行。 Ajax执行第二次操作后

如何处理数字4.ajax是异步函数。我需要完成它才能完成第二个功能。

有什么建议?我不想过多地偏离设计(除非我别无选择),因为我必须遵循一些标准

感谢

伪代码

@using (Html.BeginForm("action1", "controller1", FormMethod.Post, new { id = "form1" }))
{

    @* various controls*@
    <input type="submit" name="save1" id="Save1" value="Save" onclick="DoXY(event);"  /> 
}

<script type="text/javascript">
    function DoXY(e) {
        if (DoX())
            Doy();
    }
    function DoX()
    {
                $.post('@(Url.Action("funcX", "controller1"))', postData, function (result) {
                    if (result.Result != 'True')
                    {
                       //what to do, I know return false does not work
                    }
                    else
                    {
                       //what to do, I know return true does not work

                     }

                });
                function DoY()
                {
                       //do something
                       $('#form1').submit(); //this will continue to next action
                }
    }
</script>

1 个答案:

答案 0 :(得分:1)

你可以在需要它的DoX()中调用DoY()。

如果由于您的标准而不允许这样做,您可以将匿名回调函数传递给DoX(),如下所示:

function DoXY(e) {
    DoX(function (result) {
        if (result) {
            Doy();
        }
    });
}

然后在DoX()中,您只需将结果作为参数调用该匿名函数:

function DoX(callback)
{
    $.post('@(Url.Action("funcX", "controller1"))', postData, function (result) {
        callback(result.Result == 'True');
    });
}