asp.net - tutorial - pasar datos de una vista a un controlador c#
Mostrar una vista desde otro controlador en ASP.NET MVC (7)
¿Has probado RedirectToAction
?
¿Es posible mostrar una vista desde otro controlador?
Digamos, por ejemplo, que tengo un Category/NotFound.aspx
CategoriesController
y una vista de Category/NotFound.aspx
. Mientras estoy en el View("NotFound")
CategoriesController
, puedo devolver fácilmente la View("NotFound")
.
Ahora diga que tengo un ProductsController
y una acción y vista para agregar un producto. Sin embargo, esta acción requiere que tengamos una Categoría para agregar el Producto. Por ejemplo, Products/Add/?catid=10
.
Si no puedo encontrar la Categoría basada en catid
, quiero mostrar la vista NotFound
desde el controlador de Categorías en lugar de crear una vista CategoryNotFound
bajo el controlador de Productos.
¿Es esto posible o estoy estructurando las cosas de manera incorrecta? ¿Existe una forma correcta de hacer esto?
Con este código podrás obtener cualquier controlador:
var controller = DependencyResolver.Current.GetService<ControllerB>();
controller.ControllerContext = new ControllerContext(this.Request.RequestContext,
controller);
Puedes usar:
return View("../Category/NotFound", model);
Se probó en ASP.NET MVC 3, pero también debería funcionar en ASP.NET MVC 2.
Sí tu puedes. Devuelve una acción como esta:
return RedirectToAction("View", "Name of Controller");
Un ejemplo:
RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees");
Este enfoque llamará el método GET
También podrías pasar valores a acciones como esta:
RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees", new {id = id.ToString(), viewtype = "extended" );
Sí. De forma predeterminada, ASP.NET MVC verifica primero en /Views/[Controller_Dir]/
, pero después de eso, si no encuentra la vista, verifica en /Views/Shared
.
El directorio compartido está allí específicamente para compartir vistas a través de múltiples controladores. Solo agrega tu vista al subdirectorio Compartido y listo.
Si return View("~/Views/Wherever/SomeDir/MyView.aspx")
, puede devolver cualquier vista que desee.
Si es posible. Devuelve un método RedirectToAction()
como este:
return RedirectToAction("ActionOrViewName", "ControllerName");
También puede llamar a cualquier controlador desde JavaScript / jQuery . Digamos que tiene un controlador que devuelve 404 o algún otro control de usuario / página. Luego, en alguna acción, desde su código de cliente, puede llamar a alguna dirección que activará su controlador y devolver el resultado en formato HTML . Su código de cliente puede tomar este resultado devuelto y colocarlo donde desee en su página ...