Estoy construyendo una aplicación web MVC3 y estoy usando knockoutjs. Hay dos vistas en la aplicación. SetUpNewCompany y ManageAccount. Para configurar una nueva compañía, el usuario primero ingresa el número de cuenta y hace clic en buscar. Si el número de cuenta ya existe, el usuario puede hacer clic en un botón para ir a la vista Administrar cuenta. En SetUpNewCompanyController, redirijo utilizando el método RedirectToAction. Sin embargo, cuando se ejecuta la acción de Index2 en ManageAccount, la vista no se muestra. Si escribo la URL completa, se muestra la vista.MVC RedirectToAction a través de ajax llamada jQuery en knockoutjs no funciona
SetUpNewCompanyController.cs
[HttpPost]
public RedirectToRouteResult RedirectToManageAccount(string accountNumber)
{
return RedirectToAction("Index2", new RouteValueDictionary(new {controller=
"ManageAccount", companyId = "7e96b930-a786-44dd-8576-052ce608e38f" }));
}
Este arriba se llama por la función a continuación cuando se hace clic en un botón
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);
}
La URL que se genera es
http://localhost:53897/ManageAccount/Index2?companyId=7e96b930-a786-44dd-8576-
052ce608e38f
La ventana de la consola de Firebug muestra
GET http://localhost:53897/ManageAccount/Index2?companyId=7e96b930-a786-44dd-8576-
052ce608e38f 200 OK and the spinner keeps spinng
Además, ¿cómo puedo obtener la URL a continuación en lugar de la que tiene la cadena de consulta
http://localhost:53897/ManageAccount/Index2/7e96b930-a786-44dd-8576-052ce608e38f
¿hay otra manera para redirigir a la ManageAccount/Index2 también he añadido la ruta como usted sugiere, pero todavía tiene el? CompanyID = xxxxx en la URL – shresthaal
depende de la situación específica , De Verdad. Actualicé mi respuesta con una posible simplificación del proceso de redireccionamiento. En cuanto a la ruta: ¿estás seguro de que no la agregaste después de una regla más general? – twoflower
cambié el companyid a id y usé la ruta de enrutamiento predeterminada para eliminar la cadena de consulta – shresthaal