2016-09-20 2 views
1

Je suis complètement confondu avec beaucoup d'articles et de tutoriels sur l'utilisation de html helper pour générer une liste déroulante. mon objectif est d'avoir 2 déroulant dans le premier j'ai besoin d'une liste de pays, puis après avoir choisi un pays, les listes déroulantes suivantes montrent les visites disponibles pour ce pays. mais je suis coincé dans la première liste déroulante.Asp.net MVC liste déroulante avec Html Helper

-je créer un modèle comme celui-ci

public class test 
{ 
    public List<Country> Countries { get; set; } 
} 

et dans mon contrôleur j'ai cette

{ 
     var country = db.Countries.ToList(); 
     var vn = new test { Countries = country.ToList() }; 
     return View(vn); 
    } 

et vue foreach boucle fonctionne correctement et il montre la liste des pays, mais ma liste déroulante a erreur et je suis vraiment confus comment y remédier.

@model vidiaweb_com.Models.test 
<div class="container" id="ttitle"> 

<nav class=""> 
    <ul class="resetpadmar"> 
     @foreach (var t in Model.Countries) 
     { 
      <li class=""> 
       <div class="col-md-2 col-sm-2"> 

        @t.CountryName 

       </div> 


      </li> 
     } 
    </ul> 
</nav> 

<div class="form-group"> 
    @Html.LabelFor(model => model.Id, "Id", htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.DropDownList("Id", null, htmlAttributes: new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.Id, "", new { @class = "text-danger" }) 
    </div> 
</div> 

apprécier toute aide

+1

Que voulez-vous dire par * liste déroulante a Erreur *? S'il vous plaît, spécifiez –

+0

Reportez-vous également [ce DotNetFiddle] (https://dotnetfiddle.net/1bPZym) –

+0

@StephenMuecke merci beaucoup. Je suis un peu confus au sujet du violon mais j'essaie de comprendre. il semble que c'est exactement ce dont j'ai besoin –

Répondre

1

Si vous ne voyez pas, il est chargé des données, parce que vous ne fournit pas. Vous devez modifier votre liste déroulante comme ci-dessous:

@Html.DropDownList("Id", 
    Model.Countries.Select(m => new SelectListItem 
    { 
     Value = m.Id.ToString(), 
     Text = m.Name 
    }), 
    new { @class = "form-control" }) 

Ou mieux encore, utiliser la version typer DropDownListFor:

@Html.DropDownListFor(m => m.Id, 
    Model.Countries.Select(m => new SelectListItem 
    { 
     Value = m.Id.ToString(), 
     Text = m.Name 
    }), 
    new { @class = "form-control" }) 

Note:Text = m.Name devrait être modifié pour correspondre à votre modèle.

+0

merci je vais travailler dessus. est-il possible de me dire quelle est la valeur et pourquoi est-ce une chaîne? –

+1

@nedaDerakhshesh, Ce sont les propriétés de 'SelectListItem'. Vous pouvez regarder '