2012-04-11 4 views
0

Sur mon affichage Addcar J'ai un formulaire me permet d'insérer des données dans ma base de données (dans le tableau Car).Insérer dans une table avec des clés étrangères?

Dans la table Car j'ai la clé étrangère associée à la table Categorie. Donc, dans mes formulaires d'ajout, je devrais avoir un dropDownlist qui permet à l'utilisateur de choisir la catégorie de voiture qu'il veut ajouter.

cela fait partie de mon avis:

   <div class="editor-label"> 
    <p> 
     <%: Html.LabelFor(model => model.Idcat) %> 
    </p> 
    </div> 
    <div class="editor-field"> 
    <p> 
    <!-- in this dropDownList i want to show the all Name Of Marque in my forgien table and user when he select value wil be set at id of selected marque --> 
     <%: Html.DropDownListFor(model => model.Idcat, ViewBag.cat as SelectList)%> 
     <%: Html.ValidationMessageFor(model => model.Idcat) %> 
    </p> 
    </div> 

Ceci est mon action du contrôleur:

 public ActionResult addcar() 
    { 

     ViewBag.cat = new SelectList(entity.categorie, "Idcat", "Nom"); 

     return View(); 
    } 

Ce travail très bien jusqu'à ce que je clic sur la création, il me montre cette erreur There is no ViewData item of type 'IEnumerable <SelectListItem>' with key 'Idcat'. sur cette ligne <%: Html.DropDownListFor(model => model.Idcat, ViewBag.cat as SelectList)%>

+0

J'ai mis à jour mon post s'il vous plaît vérifier. – Chlebta

Répondre

0

Dans le didacticiel ASP.Net MusicStore, vous pouvez choisir un exemple dans une liste de genres donnée. La liste des genres est passé à la vue par le ViewBag qui est rempli par le contrôleur:

MusicStore Tutorial

Ceci est probablement exactement ce que vous recherchez.

+0

, il utilise une liste pré liste défindée, aussi ce n'est pas si clair. – Chlebta

+0

Le tutoriel est très clair à ce sujet. Voir les sections "Transmission d'informations à une vue à l'aide de ViewBag" et "Assistants HTML pour afficher les listes déroulantes dans la vue Créer". Dans votre cas, vous devrez obtenir toutes les marques disponibles dans le contrôleur, le passer à la vue et construire la liste à partir de cette liste. Si ce n'est pas ce dont vous avez besoin, alors soyez plus précis. –

+0

Je passe plus d'un modèle à ma vue, et mon point de vue utilise déjà Models.Cars, donc je passe à un autre modèle. – Chlebta

0

La liaison de modèle ne lie réellement que des éléments individuels. Donc, c'est bien la liaison Idmarque. Il n'est pas utile d'afficher une liste déroulante des valeurs possibles. Pour moi, il semble que quelque chose manque dans le cadre, car il vous fait arrêter d'utiliser EditorForModel. Vous devez décider comment vous voulez gérer la liste déroulante. Êtes-vous d'accord pour avoir un Helper Html qui va interroger la base de données et dessiner une liste d'options? Ou préféreriez-vous que votre contrôleur appelle une méthode de modèle pour obtenir une liste d'options et la passe dans la vue en tant que partie d'un modèle de vue? Vous voulez probablement éviter de passer un lecteur de données car vous risquez d'avoir des problèmes de connexion ouverts si vous le faites.

Questions connexes