150 votes

DropDownList dans MVC 4 avec Razor

J'essaie de créer un DropDownList sur une vue de rasoir.

Quelqu'un pourrait-il m'aider ?

Code HTML5 normal :

<select id="dropdowntipo">
    <option value="Exemplo1">Exemplo1</option>
    <option value="Exemplo2">Exemplo2</option>
    <option value="Exemplo3">Exemplo3</option>
</select>

J'ai essayé ça :

@{
    var listItems = new List<ListItem> { 
        new ListItem { Text = "Exemplo1", Value = "Exemplo1" }, 
        new ListItem { Text = "Exemplo2", Value = "Exemplo2" }, 
        new ListItem { Text = "Exemplo3", Value = "Exemplo3" } 
    };
}

@Html.DropDownListFor(model => 
    model.tipo, 
    new SelectList(listItems), 
    "-- Select Status --"
)

10voto

Basheer AL-MOMANI Points 5565

Croyez-moi, j'ai essayé beaucoup d'options pour faire cela. et j'ai la réponse ici

mais je recherche toujours les meilleures pratiques et la meilleure méthode que je connaisse à ce jour pour les développeurs frontaux et dorsaux est la suivante for loop (oui, je ne plaisante pas)

Parce que lorsque le front-end vous donne les pages de l'interface utilisateur avec des données factices, il a également ajouté des classes et des styles en ligne sur des options de sélection spécifiques, de sorte que ses hard to deal en utilisant HtmlHelper

Regardez ça :

<select class="input-lg" style="">
    <option value="0" style="color:#ccc !important;">
        Please select the membership name to be searched for
    </option>
    <option value="1">11</option>
    <option value="2">22</option>
    <option value="3">33</option>
    <option value="4">44</option>
</select>

ceci de la part du développeur frontal, donc la meilleure solution est d'utiliser la boucle for.

Fristly create ou get your list des données de (...) dans l'action du contrôleur et les mettre dans le ViewModel, le ViewBag ou n'importe quoi d'autre.

//This returns object that contain Items and TotalCount
ViewBag.MembershipList = await _membershipAppService.GetAllMemberships();

Ensuite, dans la vue, faites cette simple boucle for pour remplir la liste déroulante.

<select class="input-lg" name="PrerequisiteMembershipId" id="PrerequisiteMembershipId">
    <option value="" style="color:#ccc !important;">
        Please select the membership name to be searched for
    </option>
    @foreach (var item in ViewBag.MembershipList.Items)
    {
        <option value="@item.Id" @(Model.PrerequisiteMembershipId == item.Id ? "selected" : "")>
            @item.Name
        </option>
    }
</select>

de cette façon, vous ne briserez pas le design de l'interface utilisateur, qui est simple, facile et plus lisible.

J'espère que cela vous aidera même si vous n'avez pas utilisé de rasoir.

8voto

Lone Coder Points 2417

L'utilisation d'un tableau serait un peu plus efficace que la création d'une liste.

@Html.DropDownListFor(x => x.Tipo, new SelectListItem[]{
                new SelectListItem() {Text = "Exemplo1", Value="Exemplo1"},
                new SelectListItem() {Text = "Exemplo2", Value="Exemplo2"},
                new SelectListItem() {Text = "Exemplo3", Value="Exemplo3"}})

8voto

Rameshbl Points 91
@{
List<SelectListItem> listItems= new List<SelectListItem>();
listItems.Add(new SelectListItem
    {
      Text = "One",
      Value = "1"
    });
listItems.Add(new SelectListItem
    {
        Text = "Two",
        Value = "2",
    });
listItems.Add(new SelectListItem
    {
        Text = "Three",
        Value = "3"
    });
listItems.Add(new SelectListItem
{
   Text = "Four",
   Value = "4"
});
listItems.Add(new SelectListItem
{
   Text = "Five",
   Value = "5"
});
}
@Html.DropDownList("DDlDemo",new SelectList(listItems,"Value","Text"))

Refer:- Créer une liste déroulante dans un exemple de rasoir MVC 4

4voto

Lone Coder Points 2417

Si vous utilisez ASP.net 5 (MVC 6) ou une version plus récente, vous pouvez utiliser la fonction nouveaux Tag Helpers pour une très belle syntaxe :

<select asp-for="tipo">
    <option value="Exemplo1">Exemplo1</option>
    <option value="Exemplo2">Exemplo2</option>
    <option value="Exemplo3">Exemplo3</option>
</select>

4voto

Jeetendra Negi Points 415

Utilisez simplement Ceci

public ActionResult LoadCountries()
{
     List<SelectListItem> li = new List<SelectListItem>();
     li.Add(new SelectListItem { Text = "Select", Value = "0" });
     li.Add(new SelectListItem { Text = "India", Value = "1" });
     li.Add(new SelectListItem { Text = "Srilanka", Value = "2" });
     li.Add(new SelectListItem { Text = "China", Value = "3" });
     li.Add(new SelectListItem { Text = "Austrila", Value = "4" });
     li.Add(new SelectListItem { Text = "USA", Value = "5" });
     li.Add(new SelectListItem { Text = "UK", Value = "6" });
     ViewData["country"] = li;
     return View();
}

et dans View utiliser ce qui suit.

 @Html.DropDownList("Country", ViewData["country"] as List<SelectListItem>)

Si vous voulez obtenir des données d'un ensemble de données et les afficher dans une boîte de liste, utilisez le code suivant.

List<SelectListItem> li= new List<SelectListItem>();
for (int rows = 0; rows <= ds.Tables[0].Rows.Count - 1; rows++)
{
    li.Add(new SelectListItem { Text = ds.Tables[0].Rows[rows][1].ToString(), Value = ds.Tables[0].Rows[rows][0].ToString() });
}
ViewData["FeedBack"] = li;
return View();

et dans la vue écrire le code suivant.

@Html.DropDownList("FeedBack", ViewData["FeedBack"] as List<SelectListItem>)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X