2017-02-02 4 views
0

J'essaye d'ajouter des articles dans DropDownList sans base de données. Mais la sortie affiche uniquement "Test ..."ASP.NET MVC comment montrer DropDownList

Ma classe de modèle.

public class DropDownListData 
{ 
    public DropDownListData() 
    { 
     City = new List<SelectListItem> { }; 
    } 
    public List<SelectListItem> City; 
} 

Contrôleur

public ActionResult Travel() 
{ 
    DropDownListData ddld = new DropDownListData(); 

    ddld.City = new List<SelectListItem> 
    { 
     new SelectListItem {Value = "Paris" ,Text = "Paris"}, 
     new SelectListItem {Value = "Moscow",Text = "Moscow"}, 
     new SelectListItem {Value = "Yerevan" ,Text = "Yerevan" } 
    }; 
    return View(ddld); 
} 

Voir

@model ASP.NET.Test.Models.DropDownListData 

@{ 
    Layout = null; 
} 

Testing... 
@{ 
    Html.DropDownList("series", Model.City, "Choose City"); 
} 

Pourquoi je ne vois pas DropDownList. Qu'est-ce que je fais mal?

Répondre

2

Utilisez le code suivant directement la sortie de votre DropDownList comme prévu:

@Html.DropDownList("series", Model.City, "Choose City"); 

Votre utilisation actuelle va généralement fonctionner comme un « bloc de code », comme le montre l'exemple ci-dessous:

@{ 
    // This code will be executed and can be used to set variables, etc. 
    var answer = 42; 
} 

<!-- This is an example of outputting your value --> 
<p> 
    The answer to the question is <b>@answer</b>. 
</p> 

Ainsi, votre code actuel appelait simplement la méthode Html.DropDownList(), mais ne l'utilisait ou ne l'utilisait jamais. Cependant, le préfixer avec le caractère @ le traitera comme une expression et l'affichera en conséquence.

1

Vous devez utiliser:

@Html.DropDownList("series", Model.City, "Choose City") 

au lieu de:

@{ 
    Html.DropDownList("series", Model.City, "Choose City"); 
} 

Ce que vous avez juste appelle la fonction DropDownList, ne rien faire avec le MvcHtmlString retourné. ReSharper me donne en fait un avertissement que la valeur de retour n'est pas utilisée.