重定向到ASP.NET MVC中的操作,方法不会返回视图

时间:2011-11-01 08:26:09

标签: c# jquery asp.net-mvc

我正在使用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”

有什么不对吗?

3 个答案:

答案 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,一个简单的表单提交工作会更好?