Me gustaría usar un modelo de vista en MVC en lugar de usar viewbag. ¿Hay alguna manera de crear un modelo de vista genérico compartido entre todos mis controladores y luego usar esto en mis vistas? ¿Qué tipo de código necesitaría para esto? Estaba pensando en crear algo en un controlador base. ¿Es eso posible?¿Cómo puedo crear un modelo de vista genérico en MVC?
Respuesta
Creo que el método predominante para pasar datos entre controladores y vistas es crear una clase que represente los datos que desea pasar a su vista y pasar esa variable de modelo al método de vista.
/Models/Home/IndexViewModel.cs
namespace MyProject.Models.Home
{
public class IndexViewModel
{
public string Message { get; set; }
}
}
Controladores/HomeController.cs
public class HomeController
{
public ActionResult Index()
{
IndexViewModel model = new IndexViewModel();
model.Message = "Hello World!";
View(model);
}
}
/Views/Home/Index.cshtml (en Razor MVC3)
@Model MyProject.Models.Home.IndexViewModel //strongly-typed view
<h1>@model.Message</h1>
Tomemos este ejemplo simple y creemos para su solicitud específica. La manera más fácil sería permitir que cada vista simplemente use el modelo MyClass
. Sin embargo, esto se vuelve muy inflexible, entonces esto es lo que haría para mantener el diseño flexible. Voy a suponer que hay algunos datos que desea pasar a muchas vistas (algunas o todas).
Crear clase que representa los datos que desea pasar a múltiples puntos de vista:
/Models/SharedData.cs
namespace MyProject.Models
{
public class SharedData
{
public DateTime Birthday { get; set; }
}
}
crear una interfaz para los modelos que requieren una clase Datos_compartidos.
/Models/ISharedDataViewModel.cs
namespace MyProject.Models
{
public interface ISharedDataViewModel
{
public SharedData Data { get; set; }
}
}
actualización de la Casa IndexViewModel Para utilizar la interfaz y Datos_compartidos
/Models/Home/IndexViewModel.cshtml
namespace MyProject.Models.Home
{
public class IndexViewModel: ISharedDataViweModel
{
public string Message { get; set; }
public ShardedData Data { get; set; }
}
}
Crear una vista parcial que sepa cómo mostrar datos compartidos
/Views/Shared/SharedDataView.cs (en Razor MVC3)
@Model MyProject.Models.ISharedDataViewModel //strongly-typed partial view
@if (model != null && model.Data != null)
{
<h3>@model.Data.Birthday.ToString()</h3>
}
actualización de la página de inicio para llamar al Índice Vista parcial
/Views/Home/Index.cshtml (en Razor MVC3)
@Model MyProject.Models.Home.IndexViewModel //strongly-typed view
<h1>@model.Message</h1>
@Html.Partial("SharedDataView", model)
Ahora cualquier página puede solicitar la vista parcial si el modelo de las páginas implementa ISharedDataViewModel
.
- 1. MVC modelo de vista genérico
- 2. Uso de un modelo genérico en ASP.NET MVC Razor
- 3. En Meteor, ¿cómo puedo crear un controlador de eventos genérico?
- 4. Carpeta de modelo de ASP.NET MVC para el tipo genérico
- 5. MVC 4 Autofac y el modelo de Repositorio genérico
- 6. ASP.NET MVC modelo de vista y DropDownList
- 7. ¿Cómo puedo crear un menú con pestañas en ASP.NET MVC?
- 8. Formulario dinámico MVC 3 usando un modelo de vista
- 9. ¿Cómo puedo vincular esta Vista a este modelo de vista?
- 10. Usando PagedList con un modelo de vista MVC 3
- 11. ¿Cómo puedo hacer este modelo genérico de java?
- 12. Crear controlador para vista parcial en ASP.NET MVC
- 13. ¿Cómo puedo crear un modelo/UML en Eclipse fácilmente?
- 14. MVP (Presentador de vista de modelo) o MVC (Controlador de vista de modelo)
- 15. ¿Cómo puedo declarar un cuadro desplegable en una vista para establecer un valor para un modelo en ASP.NET MVC?
- 16. asp.net ¿MVC debería ser un modelo de dominio encapsulado de modelo de vista?
- 17. ¿Cómo crear un método de extensión genérico?
- 18. Actualizando un modelo de vista desde otro modelo de vista
- 19. MVC: Controlador de vista de modelo: ¿la vista llama al modelo?
- 20. Modelo-Vista-Controlador en JavaScript
- 21. cómo crear un simulacro en un caso de prueba modelo
- 22. MVC: ¿por qué la separación de modelo, vista y controlador?
- 23. Validación: modelo o modelo de vista
- 24. MVC .NET Crear Lista desplegable de colección modelo a la vista de tipo firme
- 25. ASP.net MVC: ¿cómo accede la vista al modelo?
- 26. El modelo en MVC
- 27. ASP.Net MVC ¿Cómo mostrar una propiedad de imagen de un modelo en una vista?
- 28. Cómo obtener un archivo 'codebehind' para crear una vista ASP.NET-MVC en RC1 de forma predeterminada
- 29. Prácticas recomendadas del modelo de vista MVC de ASP.NET
- 30. Cómo usar un modelo de vista base en Asp.net MVC 2
^Gran explicación y la mejor implementación de lejos. – jhartzell