Mostrar una vista desde otro controlador en ASP.NET MVC

Resuelto dtc asked hace 15 años • 7 respuestas

¿Es posible mostrar una vista desde otro controlador?

Digamos, por ejemplo, que tengo una vista CategoriesControllery una Category/NotFound.aspx. Mientras esté en el CategoriesController, puedo regresar fácilmente View("NotFound").

Ahora digamos que tengo una ProductsControlleracción y una vista para agregar un producto. Sin embargo, esta acción requiere que tengamos una Categoría a la que agregar el Producto. Por ejemplo, Products/Add/?catid=10.

Si no puedo encontrar la categoría basada en catid, quiero mostrar la NotFoundvista desde el controlador de Categorías en lugar de crear una CategoryNotFoundvista en el controlador de Productos.

¿Es esto posible o estoy estructurando las cosas de forma incorrecta? ¿Existe una forma correcta de hacer esto?

dtc avatar May 19 '09 04:05 dtc
Aceptado

Sí. De forma predeterminada, ASP.NET MVC registra primero \Views\[Controller_Dir]\, pero después de eso, si no encuentra la vista, la registra \Views\Shared.

El directorio compartido existe específicamente para compartir Vistas entre múltiples controladores. Simplemente agregue su Vista al subdirectorio Compartido y listo.

Si lo hace, return View("~/Views/Wherever/SomeDir/MyView.aspx")puede devolver cualquier vista que desee.

womp avatar May 18 '2009 21:05 womp

Puedes usar:

return View("../Category/NotFound", model);

Fue probado en ASP.NET MVC 3, pero también debería funcionar en ASP.NET MVC 2.

Guillaume86 avatar Dec 05 '2010 11:12 Guillaume86

Si es posible. Devuelve un RedirectToAction()método como este:

return RedirectToAction("ActionOrViewName", "ControllerName");
doncadavona avatar Aug 28 '2014 07:08 doncadavona