2
function CreateModalDialogWindow(urlPath) {
$.ajax({
    url: '@Url.Action("Popup","Project")',
    type: 'POST',
    async: false,
    success: function (data) {
        debugger;
        $('#dialog').html(data).dialog({
            autoOpen: true,
            width: 400,
            resizable: false,
            modal: true
        });
    },
    error: function(){
       alert('Error!');
    }
});

return false;

}

我想使用 ajax post 调用 actionmethod。下面是动作方法

 [HttpPost]
    public PartialViewResult Popup()
    {
        return PartialView("~/Views/Shared/Project/Popup.cshtml");
    }

请让我知道上面的代码有什么问题。

4

1 回答 1

3

未调用操作方法可能有不同的原因:

  • 你有一些 javascript 错误
  • 你从不调用CreateModalDialogWindow函数
  • CreateModalDialogWindow在单击链接或表单提交时调用了 ,但您忘记通过返回 false 来取消此按钮的默认操作。

所以首先在准备好的文档中调用这段代码,看看它是否有效:

<script type="text/javascript">
$(function() {
    $.ajax({
        url: '@Url.Action("Popup", "Project")',
        type: 'POST',
        success: function (data) {
            $('#dialog').html(data).dialog({
                autoOpen: true,
                width: 400,
                resizable: false,
                modal: true
            });
        }
    });
});
</script>

现在,如果您在控制器操作中放置一个断点,它通常应该被击中。我建议您使用 javascript 调试工具,例如 FireBug,它可以帮助您查看任何可能的 javascript 错误并查看在 AJAX 请求期间发送的确切请求/响应。

您还会注意到我已删除该async: false开关,因为这会在执行此请求期间对服务器进行同步调用,从而冻结 Web 浏览器,因此您不再使用 AJAX。

于 2012-04-20T06:50:49.407 回答