2012-08-14 102 views
6

这里是我的问题:查看RedirectToAction后不刷新完成

[HttpPost] 
public ActionResult AddData(CandidateViewModel viewModel) 
{ 
    var newCandidateId = 0; 
    newCandidateId = this._serviceClient.AddCandidate(viewModel); 
    return RedirectToAction("DisplayCandidate",new {id=newCandidateId}); 
} 

public ActionResult DisplayCandidate(int id) 
{ 
    var candidateViewModel= this._serviceClient.GetCandidate(id); 
    return View(candidateViewModel); 
} 

后填写表格viwemodel发送给服务器。数据存储后,流程将重定向到DisplayCandidate操作,并且它会到达那里,但页面未刷新。我不明白为什么!请帮助。

+1

您是否通过AJAX发布?显示你的客户端代码。 – RedFilter 2012-08-14 15:02:29

+0

是的。 AJAX:如果(DataIsValid()){ $就({ URL: “/候选/ AddData”, 的contentType: “应用程序/ JSON;字符集= UTF-8”, 数据:ko.toJSON(addCandidateCommonInfoViewModel) , 类型:“POST”, dataType:'json' }); } – Vengrovskyi 2012-08-14 15:09:02

回答

7

由于您使用Ajax后

public ActionResult AddData(CandidateViewModel viewModel) 
{ 
    var newCandidateId = 0; 
    newCandidateId = this._serviceClient.AddCandidate(viewModel); 
    string ReturnURL = "/DisplayCandidate/"+newCandidateId; 
    return JSON(ReturnURL); 
} 

,并在您的Ajax POST方法:

Onsuccess(function(retURL){ window.location(retURL); }) 

这将采取新的行动和行动将返回查看。

+2

对不起,但它不工作。可能会,你错过了什么? – Vengrovskyi 2012-08-15 07:20:19

+0

更改你的控制器的AddData方法来获取。 – HaBo 2012-08-15 13:31:20

+3

用'location.replace(retURL)替换'windows.location(retURL)' 也从来没有使用手动构造URL,我们'Url.Action(“DisplayCandidate”,new {id = newCandidateId})' – Saito 2015-03-09 14:10:19