我正在使用jquery post方法执行服务器端操作
方法是:
function redirectToDraft() {
updateInboxGridAndCloseApproveDialog();
$.post('/Personnel/AgendaApproveDocument');
}
它将发布到此操作,然后在操作中我需要重定向到另一个控制器上的另一个操作,如下所示:
public ActionResult AgendaApproveDocument(int? id){
return RedirectToAction("RelatedDocumentDraft", new RouteValueDictionary(
new
{
controller = "RegisterLetter",
action = "RelatedDocumentDraft",
title = relatedDoc.Name,
factory = relatedDoc.DocumentFactory,
activityId = action.WorkItem.Id
}));
}
它可以工作并重定向到方法:
public ActionResult RelatedDocumentDraft(int?activityId, string factory, string title)
{
return View("~/Views/RegisterLetter/NewDraft.aspx");
}
我的问题是它没有返回视图“NewDraft”
有什么不对吗?
答案 0 :(得分:3)
在您的AJAX调用中,您尚未订阅成功回调,因此不会发生任何事情。如果你想处理AJAX调用的结果,那就是你应该做的:
$.post('/Personnel/AgendaApproveDocument', function(result) {
// the result variable here will contain the markup of the view
// so you could for example replace some portion of the DOM with it
// (assuming of course it is a partial view):
$('#foo').html(result);
});
答案 1 :(得分:2)
我认为您正在寻找RedirectToAction
方法。查看John Sheehan的this answer。
return RedirectToAction("Index", model);
有关MSDN的其他信息。
答案 2 :(得分:1)
你正在为这个方法做一个AJAX帖子 - 除非你告诉它,它不会对响应做任何事情。为什么AJAX,一个简单的表单提交工作会更好?