2016-10-10 1 views
0

J'ai 2 tables, codes et pays, avec une contrainte de clé étrangère sur codes.countryid sur countries.id - J'utilise le crud de base donné par le contrôleur mvc setup à partir du visuel studio 15 mais souhaite remplacer l'entrée de texte par un select pour countryid afin que l'utilisateur puisse sélectionner un pays à partir d'une liste déroulante comme appose pour entrer l'identifiant comme int.ASP MVC EF6 Accédez à la table des clés étrangères sous forme de liste

Comment puis-je accéder à une liste des pays via le modèle fourni? Exemple de code de rasoir ci-dessous. Ai-je besoin d'obtenir la liste des pays d'un autre modèle?

<div class="form-group"> 
      <label for="CountryId" class="control-label col-md-2">Country</label> 
      <select name="CountryId" class="form-control" required> 
       <option value="">Please select ...</option> 
/* Model.Countries is not available even after a foreignkey constraint? */ 
       @foreach(var i in Model.Countries) 
       { 
        <option value="@i.id">@i.Name</option> 
       } 
      </select> 
      @Html.ValidationMessageFor(model => model.CountryId, "", new { @class = "text-danger" }) 
      @Html.LabelFor(model => model.CountryId, htmlAttributes: new { @class = "control-label col-md-2" }) 
     </div> 

Répondre

0

Vous devez définir une variable ViewBag dans l'action du contrôleur avec la liste des pays.

En supposant que vous avez un contexte de DB dans votre contrôleur, vous devez mettre le code suivant dans votre action

ViewBag.CountriesList = new SelectList(_context.countries.ToList(), "Id", "Name"); 

et l'utiliser comme ci-dessous dans votre vue

@Html.DropDownListFor(a => a.countryId, (SelectList)ViewBag.CountriesList , htmlAttributes: new { @class = "form-control" })