Question

En C# MVC5 application Internet avis, comment puis-je afficher une liste déroulante pour un utilisateur de sélectionner un élément de la liste est rempli à partir d'un View Model liste?

Ici, c'est le ViewModel code:

public class MapLocationItemViewModel
{
    [Editable(false)]
    public int mapLocationForeignKeyId { get; set; }
    public List<string> mapLocationItemTypes { get; set; }
    public MapLocationItem mapLocationItem { get; set; }
}

Voici le code que j'ai actuellement dans la View:

<div class="form-group">
    @Html.LabelFor(model => model.mapLocationItem.mapLocationItemType, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.mapLocationItemTypes)
    </div>
</div>

Chaque élément de la mapLocationItemTypes est actuellement affichée comme une class="text-box single-line valid".

Est-il un MVC Vue de la balise qui permettra d'afficher une liste qui est rempli à partir d'un list<string> ou un array?

J'ai essayé le code suivant:

@Html.DropDownListFor(model => model.mapLocationItemTypes)

Cependant, j'obtiens une erreur de compilation, et ne suis pas sûr de la valeur(s) pour la méthode surchargée.

Quelle est la meilleure façon d'afficher une liste dans une vue, de sorte que l'utilisateur peut sélectionner un élément de la liste à partir de la liste?

Merci d'avance

Était-ce utile?

La solution

Modèle :

 public List<SelectListItem> mapLocationItemTypes { get; set; }
 public int mapLocationItemVal { get; set; }

Vue:

@Html.DropDownListFor(m => m.mapLocationItemVal , new SelectList(Model.mapLocationItemTypes , "Value", "Text"), "  -----Select List-----  ")

ici dans l'exemple ci-dessus la 3ème paramètre de DropDownListFor() c'est à dire " -----Select List----- " premier élément sélectionné de votre liste déroulante avec une valeur égale à ''.

Au Contrôleur pendant le POST mapLocationItemVal aurez sélectionné déroulante valeur.

Ci-dessus le montre le code qui est le meilleur et le plus simple moyen de lier Dropdownlist dans MVC.

Autres conseils

Essayez ceci;

Je suppose que vous devez remplir mapLocationItem.mapLocationItemType basé sur la valeur sélectionnée lorsque vous affichez les données.

@Html.DropDownListFor(model => model.mapLocationItem.mapLocationItemType, new SelectList(Model.mapLocationItemTypes))

Si vous souhaitez ajouter une classe CSS, vous pouvez le faire ci-dessous.

@Html.DropDownListFor(model => model.mapLocationItem.mapLocationItemType, new SelectList(Model.mapLocationItemTypes), new { @class = "your-class" })

Créer une méthode dans votre contrôleur

Public ActionResult Index()
{
   SampleDBContext db = new SampleDBContext();
   ViewBag.table_name = new SelectList(db.table_name, "DataValueField", "DataTextField");

   return View();
} 

Vue du Contrôleur

@Html.DropDownList("table_name", "select a item")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top