12 Stimmen

DropDownListFor - Anzeige einer einfachen Liste von Zeichenketten

Ich weiß, dass es bereits viele ähnliche Fragen gibt, aber ich habe Stunden damit verbracht, dies herauszufinden, und keine der anderen Antworten scheint zu helfen!

Ich möchte nur eine Liste von Zeichenketten anzeigen in einer Dropdown-Liste mit MVC. Ist das wirklich so schwierig? Ich habe nicht eine "Text" und "Wert" Trennung (obwohl MVC scheint eine erfordern) - die Zeichenfolge, die dem Benutzer angezeigt wird, ist mein Wert.

Bislang habe ich Folgendes erhalten:

Controller:

public ActionResult Index()
{
    return View(new HomeViewModel());
}

ViewModel:

public class HomeViewModel
{
    public HomeViewModel()
    {
        Items = new SelectList(new[]
        {
            new SelectListItem { Text = "One", Value = "One" },
            new SelectListItem { Text = "Two", Value = "Two" },
        });
    }

    public SelectList Items { get; set; }
}

Ansicht:

<% using (Html.BeginForm()) { %>
    <% Html.DropDownListFor(x => x.Items, Model.Items); %>
    <input type="submit" value="Go!" />
<% } %>

Aber nichts I tun, scheint eine Dropdown-Liste angezeigt zu werden. Was mache ich falsch?

10voto

Yakimych Punkte 17286
<%= Html.DropDownListFor(x => x.Items, Model.Items) %>

Sie verwechseln Ausdrücke und Aussagen. Die Html-Hilfe gibt einen String zurück, daher müssen Sie = um den 'html-Wert' auszugeben (und keine ; danach).

Aktualisierung:

Items = new SelectList(new[]
                       {
                           new SelectListItem {Text = "One", Value = "One"},
                           new SelectListItem {Text = "Two", Value = "Two"},
                       }, "Text", "Value");

Update 2:

In Ihrem Fall könnten Sie es sogar noch einfacher machen:

public class HomeViewModel
{
    public HomeViewModel()
    {
        Items = new SelectList(new[] { "One", "Two" });
        CurrentItem = "Two";
    }

    public SelectList Items { get; set; }
    public string CurrentItem { get; set; }
}

Und in der Ansicht:

<%= Html.DropDownListFor(x => x.CurrentItem, Model.Items) %>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X