it-swarm.com.de

MVC3 DropDownListFor - ein einfaches Beispiel?

Ich habe Probleme mit DropDownListFor in meiner MVC3-App. Ich konnte StackOverflow verwenden, um herauszufinden, wie sie in der Ansicht angezeigt werden können, aber jetzt weiß ich nicht, wie die Werte in den entsprechenden Eigenschaften des Ansichtsmodells erfasst werden, wenn es übergeben wird. Damit dies funktioniert, musste ich eine innere Klasse erstellen, die eine ID und eine Werteigenschaft hatte. Dann musste ich einen IEnumerable<Contrib> verwenden, um die Parameteranforderungen des DropDownListFor zu erfüllen. Wie soll MVC FW nun den Wert, der in dieser Dropdown-Liste ausgewählt ist, wieder in die einfache Zeichenfolge-Eigenschaft meines Ansichtsmodells abbilden? 

public class MyViewModelClass
{
    public class Contrib
    {
        public int ContribId { get; set; }
        public string Value { get; set; }
    }

    public IEnumerable<Contrib> ContribTypeOptions = 
        new List<Contrib>
        {
            new Contrib {ContribId = 0, Value = "Payroll Deduction"},
            new Contrib {ContribId = 1, Value = "Bill Me"}
        };

    [DisplayName("Contribution Type")]
    public string ContribType { get; set; }
}

In meiner Ansicht platziere ich das Dropdown auf der Seite wie folgt:

<div class="editor-label">
    @Html.LabelFor(m => m.ContribType)
</div>
<div class="editor-field">
    @Html.DropDownListFor(m => m.ContribTypeOptions.First().ContribId, 
             new SelectList(Model.ContribTypeOptions, "ContribId", "Value"))
</div>

Wenn ich das Formular übermittle, ist die ContribType (natürlich) null. 

Was ist der richtige Weg, dies zu tun?

110
Trey Carroll

Sie sollten das so machen:

@Html.DropDownListFor(m => m.ContribType, 
                new SelectList(Model.ContribTypeOptions, 
                               "ContribId", "Value"))

Woher:

m => m.ContribType

ist eine Eigenschaft, bei der der Ergebniswert sein wird. 

162
Sergey Gavruk

Ich denke, das wird helfen: Im Controller erhalten Sie die Listenelemente und den ausgewählten Wert

public ActionResult Edit(int id)
{
    ItemsStore item = itemStoreRepository.FindById(id);
    ViewBag.CategoryId = new SelectList(categoryRepository.Query().Get(), 
                                        "Id", "Name",item.CategoryId);

    // ViewBag to pass values to View and SelectList
    //(get list of items,valuefield,textfield,selectedValue)

    return View(item);
}

und in Ansicht

@Html.DropDownList("CategoryId",String.Empty)
7
Praveen M P

Um dynamische Daten in einer DropDownList zu binden, können Sie Folgendes tun:

Erstellen Sie ViewBag wie folgt im Controller

ViewBag.ContribTypeOptions = yourFunctionValue();

verwenden Sie diesen Wert jetzt in der folgenden Ansicht:

@Html.DropDownListFor(m => m.ContribType, 
    new SelectList(@ViewBag.ContribTypeOptions, "ContribId", 
                   "Value", Model.ContribTypeOptions.First().ContribId), 
    "Select, please")
6
Dilip0165
     @Html.DropDownListFor(m => m.SelectedValue,Your List,"ID","Values")

Hier ist Wert das Objektobjekt, in dem Sie den ausgewählten Wert speichern möchten

0
Abdul Aleem