2012-08-14 3 views
6

Ecco il mio problema:View non si aggiorna dopo RedirectToAction è fatto

[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); 
} 

Dopo aver compilato il modulo di viwemodel invia al server. Dopo che i dati sono stati archiviati, il flusso viene reindirizzato all'azione DisplayCandidate e va lì ma la pagina non viene aggiornata. Non capisco perché! Aiuto per favore.

+1

Stai postando tramite AJAX? Mostra il tuo codice lato client. – RedFilter

+0

si. AJAX: if (DataIsValid()) { $ .ajax ({url : "/ Candidato/AddData", contentType: "application/json; charset = utf-8", i dati : ko.toJSON (addCandidateCommonInfoViewModel) , tipo: "POST", dataType: 'json' }); } – Vengrovskyi

risposta

7

perché si sta utilizzando Ajax Messaggio

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

e nella vostra Ajax metodo POST:

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

questo richiederà alla nuova azione e che l'azione tornerà View.

+2

Siamo spiacenti, ma non funziona. Potrebbe essere, ti manca qualcosa? – Vengrovskyi

+0

cambia il metodo AddData del controller per ottenere. – HaBo

+3

sostituire 'windows.location (retURL)' con 'location.replace (retURL)' inoltre non utilizzare mai il comando manuale url, us' Url.Action ("DisplayCandidate", new {id = newCandidateId}) ' – Saito