2012-08-14 105 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