2012-04-04 7 views
0

Ich habe ein Registermodell, das eng an eine Registeransicht gebunden ist. Das Registermodell hat eine selectlistitem-Eigenschaft. Ich habe Probleme beim Auffüllen einer Dropdown-Box mit den Auswahllistenelementen.Mvc3 Hinzufügen von Benutzerrollen in eng gebundener Dropdown-Box

var users = Roles.GetAllRoles(); 

model.UserRoles = users.Select(m => new SelectListItem() 
{Value = m.ToString(),Text = m.ToString()}) 

@Html.DropDownListFor(r=>r.ToString(),Model.UserRoles,"Select Role") 

Antwort

0

Sie müssen den gewählten Wert auf eine Eigenschaft des Modells binden, etwa so:

(im Modell):

public string ActiveRole { get; set; } 

...

(in Ihre Ansicht):

@Html.DropDownListFor(m => m.ActiveRole, Model.UserRoles,"Select Role") 
+0

Was ich getan habe, war es an eine Namenseigenschaft in meinem Modell zu binden. Danke – CodeNoob

+0

Jetzt verstehe ich wirklich, was ure saying.lol, lernte ich auf die harte Tour. Ich habe versucht, einen ausgewählten Wert zu erhalten. Ich habe eine Eigenschaft "selected role" erstellt, die an das Drop-down gebunden ist. – CodeNoob

0

Das erste Argument der Methode DropDownListFor ist die Eigenschaft, die den Wert der Liste enthält. Wenn der Wert in der Liste die ID der Rolle ist, muss dies das Argument x => x.RoleId haben, wobei x Ihr Modell ist und RoleId die Eigenschaft im Modell ist. Sie binden die Dropdown-Liste an die Zeichenfolgendarstellung des Ansichtsmodells, deren Ergebnis "Müll" ist. Das zweite Argument ist ein IEnumerable<SelectListItem>, das die Optionen für die Liste enthält. Dieses Objekt hat die folgenden Werte: Value ist der Wert, der an den Server zurückgesendet wird. Dies sollte die Rolle identifizieren, oft die ID der Rolle. Text ist der Text, der in der Liste angezeigt wird, was der Benutzer sieht. Selected ist ein boolescher Wert, der angibt, welches Element in der Liste ausgewählt ist. Wenn es in allen SelectListItem s falsch ist, wird das oberste ausgewählt, was Standard-HTML-Verhalten ist.

In Ihrem Fall platzieren Sie die SelectListItem s im Modell, das ist ein unnötiger Schritt, sollte aber funktionieren. Das Modellbinder wird das erste Argument jedoch nicht verstehen, also müssen Sie das beheben.

Verwandte Themen