2009-02-16 24 views
19

Estoy tratando de determinar si existe soporte integrado para unir tipos complejos para formar elementos.ASP.NET MVC: Enlace de un tipo complejo a un Seleccionar

Para utilizar una situación común hipotética: Tengo una entidad producto que pertenece a una categoría - los modelos tienen el siguiente aspecto:

public class Product 
{ 
    public int ID { get; set; } 
    public string Description { get; set; } 
    public Category Category { get; set; } 
} 
public class Category 
{ 
    public int ID { get; set; } 
    public string Title { get; set; } 
} 

Crear un formulario para hidratar una nueva entidad que sólo contiene valores simples, tipos es agradable y sencilla utilizando el marco de ASP.Net MVC, por ejemplo:

public ActionResult Create(Product product); 

Pero qué pasa con el escenario anterior donde sus entidades contienen otros tipos complejos? ¿Hay mecanismos incorporados para vincular un IEnumerable < T > a una lista desplegable y luego hidratar automáticamente el T cuando se envía el formulario?

Sería bastante trivial hacerlo manualmente - Solo estoy tratando de determinar lo que puedo obtener de forma gratuita.

Respuesta

15

Ver here y here y here para más detalles acerca de atar modelo.

+0

Sí, utilizo una carpeta de modelo complejo y estos enlaces en esta respuesta son el mejor lugar para buscar hasta ahora. –

1

Lo más cercano que creo que vendrá es anular el método ToString() en la clase para enviar información significativa a DropDownList, pero no mucho más.

Puede vincular la colección IEnumerable a DropDownList y luego recuperar su SelectedItem cuando se envía el formulario, esa es la forma más económica que se me ocurre.

2

Por favor, compruebe this, como creo que habla de su pregunta, parece que los chicos de S # arp lo han resuelto y es fácil de "robar" si no usa sus cosas.

De todos modos, creo que es algo peligroso cargar entidades automáticamente desde lo que sea que las publicaciones de los usuarios ... tendrán que pensar en ello.

Cuestiones relacionadas