Sto creando un'applicazione Web MVC3 e sto utilizzando knockoutjs. Ci sono due viste nell'applicazione. SetUpNewCompany e ManageAccount. Per impostare una nuova società, l'utente inserisce prima il numero dell'account e fa clic su Cerca. Se il numero di conto esiste già, l'utente può fare clic su un pulsante per andare alla vista ManageAccount. In SetUpNewCompanyController reindirizzo utilizzando il metodo RedirectToAction. Tuttavia, quando viene eseguita l'azione Index2 in ManageAccount, la vista non viene visualizzata. Se scrivo l'URL completo, viene visualizzata la vista.MVC RedirectToAction tramite ajax La chiamata jQuery in knockoutjs non funziona
SetUpNewCompanyController.cs
[HttpPost]
public RedirectToRouteResult RedirectToManageAccount(string accountNumber)
{
return RedirectToAction("Index2", new RouteValueDictionary(new {controller=
"ManageAccount", companyId = "7e96b930-a786-44dd-8576-052ce608e38f" }));
}
Questo sopra è chiamato dalla funzione di seguito quando viene cliccato un pulsante
self.redirectToManageAccount = function() {
var accountNumber = "7e96b930-a786-44dd-8576-052ce608e38f";
$.ajax({
type: "POST",
url: "/SetUpNewCompany/RedirectToManageAccount",
data: { accountNumber: accountNumber },
success: function (data) {
},
error: function() {
}
});
}
ManageAccountController.cs
public ActionResult Index2(String companyId)
{
var viewModel = new Models.Index();
List<String> compList = new List<String>();
compList.Add("MyCompany");
List<String> usersList = new List<String>();
usersList.Add("User1");
viewModel.Users = usersList;
viewModel.Companies = compList;
viewModel.CompanyId = companyId;
viewModel.Role = "Role1";
return View("ManageAccount",viewModel);
}
L'URL che viene generata viene
http://localhost:53897/ManageAccount/Index2?companyId=7e96b930-a786-44dd-8576-
052ce608e38f
La finestra della console di Firebug mostra
GET http://localhost:53897/ManageAccount/Index2?companyId=7e96b930-a786-44dd-8576-
052ce608e38f 200 OK and the spinner keeps spinng
Inoltre, come faccio ad ottenere l'URL di seguito, invece di quello con querystring
http://localhost:53897/ManageAccount/Index2/7e96b930-a786-44dd-8576-052ce608e38f
c'è un altro modo per reindirizzare al ManageAccount/Indice2 anche ho aggiunto il percorso come lei ha suggerito, ma ho ancora ottenuto il? CompanyID = xxxxx nell'URL – shresthaal
dipende dalla situazione specifica , veramente. Ho aggiornato la mia risposta con una possibile semplificazione del processo di reindirizzamento. Per quanto riguarda il percorso: sei sicuro di non averlo aggiunto __after__ qualche regola più generale? – twoflower
ho cambiato la companyid in id e ho utilizzato il percorso di instradamento predefinito per rimuovere la query querystring – shresthaal