3

所以,我有一个小问题,我想知道是否有可能通过以下方式解决它,我知道还有其他方法可以解决这个问题,但我想知道是否有可能解决它像这样:

我有一个 ajax 调用,一个 GET。在这个 ajax 调用中,我只想根据用户输入(通过 javascript)传递一些参数,并让控制器操作处理其余的。问题在于,对于 ajax,success 函数负责处理操作完成后发生的任何事情。

我的操作有一个重定向(ActionResult 它返回一个带有一些参数的视图),我想让控制器在这里重定向我,但是 ajax 使用 Success 函数启动。

如何将完整路径(由于它基于用户输入而可以更改)传递给成功函数以进行重定向?

谢谢!

 public string Edit(string stringEventID)
    {
        Guid eventID = new Guid(stringEventID);

        if (eventID == Guid.Empty || eventID == null)
        {
            return Url.Action("Edit", "MyController", new { area = "MyArea", id = new Event() });
        }

        else
        {
            Event _event = _iEMARepository.Events.Where(p => p.EventID == eventID).SingleOrDefault();

            return Url.Action("Edit", "MyController", new { area = "MyArea", id = _event })
        }
    }
4

1 回答 1

4

使用 Url 帮助器为 MVC 和您的路由正确构建 URL。然后返回一个Jsonresult带有 URL 的(你可能需要设置 AllowGet):

string url = Url.Action(your arguments here);

return new JsonResult()
{
    JsonRequestBehavior = JsonRequestBehavior.AllowGet,
    Data = new Dictionary<string,string>() { { "url", url } }
};

比使用成功函数中的 url 来触发重定向:

success: function (data) {
    window.location.href = JSON.parse(data)['url'];
}
于 2013-08-20T18:31:18.607 回答