Soy nuevo en MVC, así que tal vez esta es una pregunta estúpida: estoy tratando de entender las opiniones fuertemente tipadas en asp. mvc neto Estoy trabajando en la versión 3. Si tengo un proyecto con 2 modelos, diga Person and Department. Una persona debe pertenecer a un departamento. Así que tengo mi modelo Departamento (y he generado mi controlador y la interfaz CRUD):ASP.NET MVC3, ¿por qué la lista desplegable se basa en viewbag incluso en una vista fuertemente tipada?
public class Department
{
public int Id { get; set;}
public string DeparmentName { get; set;}
}
entonces tengo un modelo de persona que hace referencia Departamento:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Department_Id { get; set; }
[ForeignKey("Department_Id")
public virtual Department Department { get; set;}
}
Ahora genero mi controlador y Vistas . Ahora, cuando miro en el PersonController, he lo siguiente para la Creación:
public ActionResult Create()
{
ViewBag.Department_Id = new SelectList(db.Deparments, "Id", "DepartmentName");
return View();
}
y en persona \ Create.cshtml, el código para crear el Departamento desplegable es
@Html.DropDownList("Department_Id", String.Empty)
Mientras Entiéndelo, DropDownList Html helper está usando ViewBag para crear mi lista desplegable. Sin embargo, FirstName y LastName parecen tener sus campos de entrada creados sin depender de ViewBag, por lo que en mi vista, puedo tener tiempo de compilación en mis campos FirstName y LastName porque mi vista está fuertemente tipada, pero no en mi DropDownList.
¿Hay algún motivo por el que DropDownList para el departamento no tenga un tipeo fuerte o estoy haciendo algo mal y hay una manera de hacerlo fuertemente tipado?
Gracias :)
Hola Edwin, gracias, eso tiene sentido, una sola persona tiene un Department_ID, pero pensé que la vista era vinculante para mi modelo Person, que define la relación con los departamentos a través del propiedad "virtual"? Tal vez estoy buscando demasiado "magia" en el marco de MVC. – Rick
@Rick: supongo que sí. La vista solo se une al único Departamento definido por su Persona.Utiliza la viewbag para transferir la lista completa de departamentos. Por cierto, ViewBag es simplemente un envoltorio alrededor de ViewData (de la otra respuesta) que le permite crear propiedades dinámicas. –