所以,我有一个小问题,我想知道是否有可能以下列方式解决它,我知道还有其他方法可以解决这个问题,但我想知道它是否可能像这样解决它:
我有一个ajax调用,一个GET。在这个ajax调用中,我只想根据用户输入(通过javascript)传递一些参数,并让控制器动作处理其余部分。问题在于,使用ajax,成功函数会处理操作完成后发生的任何事情。
我的动作重定向(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 })
}
}
答案 0 :(得分:4)
使用Url帮助程序为MVC和路由正确构建URL。然后返回带有URL的Jsonresult
(您可能需要设置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'];
}