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 ...