¿Qué es ViewData? diccionario
- objeto que se pone datos en, que luego se convierte disponibles a la vista.
ViewData Muestra
método Acción controlador gusta:
public class HomeController : Controller
{
public ActionResult Index()
{
var featuredProduct = new Product
{
Name = "Smart Phone",
QtyOnHand = 12
};
ViewData["FeaturedProduct"] = featuredProduct;
return View();
}
}
Cómo utilizar ViewData en Vista?
@{
var viewDataProduct = ViewData["FeaturedProduct"] as Product;
}
<div>
Today's Featured Product is!
<h3>@viewDataProduct.Name</h3>
</div>
¿Qué es un modelo de vista?
- Permitir dar forma a múltiples entidades de uno o más modelos de datos o fuentes en un único objeto
- optimizado para el consumo y representación de la vista
que su gusto:
¿Cómo usar ViewModel con MVC 3?
modelo de dominio Método
public class Product
{
public Product() { Id = Guid.NewGuid(); Created = DateTime.Now; }
public Guid Id { get; set; }
public string ProductName { get; set; }
}
ViewModel
public class ProductViewModel
{
public Guid VmId { get; set; }
[Required(ErrorMessage = "required")]
public string ProductName { get; set; }
}
Acción controlador
[HttpGet]
public ActionResult AddProduct()
{
//for initialize viewmodel
var productViewModel = new ProductViewModel();
//assign values for viewmodel
productViewModel.ProductName = "Smart Phone";
//send viewmodel into UI (View)
return View("AddProduct", productViewModel);
}
Vista - AddProduct.cshtml
@model YourProject.ViewModels.ProductViewModel //set your viewmodel here
Conclusión
- Mediante el uso de modelo de vista puede pasar datos de tipo fuerte a la vista
- Pero ViewData es sin apretar Typed.So necesidad de emitir datos sobre Ver
- ViewModel se puede usar para escenarios complejos como fusionar más de un modelo de dominio
- Pero ViewData sólo se puede utilizar para escenarios simples como llevar los datos de la lista desplegable
- modelo de vista puede utilizar para escenarios de validación basados en atributos, que sea necesario para Ui
- pero no puede utilizar ViewData para este tipo de validaciones
- Como mejores prácticas siempre tratan de utilizar los datos con establecimiento inflexible con Views.ViewModel es el mejor candidato para eso.
Gracias por su respuesta, en caso de que alguien necesite saber más sobre este tema, también encontré una gran entrada de blog relacionada con mi pregunta http://theminimalistdeveloper.com/2010/08/21/why-when-and- how-to-use-typed-views-and-viewmodel-pattern-in-asp-net-mvc/ –