2009-05-16 1 views
4

J'ai un modèle de données d'entité avec des types de produit et de famille. Chaque produit a une famille. J'utilise ce modèle avec un site Web ASP.NET MVC. Je veux Family DropDownLists sur les vues Créer et modifier des vues de mon produit. Comment puis-je utiliser les propriétés de navigation d'objet entité dans un DropDownList sur mon ASP.NET MVC fortement typé Créer et modifier des vues?Comment utiliser les propriétés de navigation d'objet entité dans un DropDownList sur mon ASP.NET MVC fortement typé Créer et modifier des vues?

Le code suivant échoue ...

ProductController:

// POST: /Product/Create 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Create(Product p) 
{ 
    db.AddToProduct(p); 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
} 

Créer une vue:

<p> 
    <label for="Family">Family:</label> 
    <%= Html.DropDownList("Family", new SelectList((IEnumerable)ViewData["Families"], "Id", "Name"))%> 
    <%= Html.ValidationMessage("Family", "*")%> 
</p> 

Puis-je faire cela sans l'aide d'un FormCollection? Je préfère garder un produit fortement typé.

Répondre

0

En supposant que le produit a une Families propriété (ou est une entité LINQ avec une contrainte de clé Etrangère)

<%= Html.DropDownList("Family", new SelectList(model.Families, "Id", "Name"))%> 
1

A l'état actuel, vous ne pouvez pas utiliser les clés étrangères pour faire votre liaison. Vous devez manuellement mettre à jour une relation entre un produit et une famille. Pour cela, vous devez ajouter un paramètre familyid à votre action "post". Et attribuez product.family aux familles. Où (f => f.id = famylyId)

1

À droite, vous aurez donc besoin de quelque chose d'autre que votre objet d'entité pour récupérer les listes de référentiels. Je vois que vous allez chercher une liste de sélection dans le sac de collection ViewData mais vous ne la voyez pas entrer. Tant que vous l'avez dans l'objet ViewData ou ViewModel, tout ira bien. Pour la partie sur votre clé étrangère ... alex a déclaré que la version actuelle de EF ne prend pas en charge l'exposition directe des clés étrangères en tant que propriétés simples. Je crois que cela va changer dans 2.0 mais en attendant faire une recherche pour fausser les propriétés des clés étrangères (SO ne me permettra pas d'afficher des liens pour le moment). Ça marche pour moi.

Questions connexes