2017-02-09 5 views
0

Ich frage mich, ob jemand jemals ein Problem erlebt hat, wie ich gerade habe.DropDownListFür Probleme

Controller:

_OpsAdminViewModel.userRoleID = _OpsAdminViewModel.retrieveHighestUserRoleGuidFromUserID(id.Value); 
_OpsAdminViewModel.ActiveRoleList = _OpsAdminViewModel.GetActiveRoles(); 
_OpsAdminViewModel.UserRoleSelectList = new SelectList(_OpsAdminViewModel.ActiveRoleList, "RoleID", "RoleName", _OpsAdminViewModel.userRoleID); 

Ausblick:

@Html.DropDownListFor(model=>model.selectedRoleID, Model.UserRoleSelectList) 
Jetzt

, hier ist, wo es sehr seltsam bekommt. Wenn ich eine Unterbrechung an der Return-Zeile des Controllers oder der DropDownListFor-Zeile der View anlege, sehe ich buchstäblich, dass der Wert, den ich ausgewählt haben möchte, ausgewählt werden sollte. Durch das Erweitern des UserRoleSelectList-Objekts wird die korrekte "SelectedValue" ID angezeigt und in der "Ergebnisansicht" wird der richtige Wert für "True" ausgewählt. Wenn die Seite gerendert wird, zeigt das Pulldown-Menü jedoch das 0-Position-Element des Pulldown-Menüs an.

Antwort

0

Modellbindung funktioniert durch Bindung an den Wert Ihrer Immobilie. Wenn Sie DropDownListFor() verwenden, erstellt die Methode intern eine neue IEnumerable<SelectListItem> und legt die Selected-Eigenschaft basierend auf dem Wert Ihrer Eigenschaft fest. In Ihrem Fall stimmt der Wert selectedRoleID nicht mit dem Wert einer der Optionen überein, daher wird die erste Option ausgewählt (weil etwas sein muss).

den Wert von selectedRoleID in der GET-Methode ein, bevor Sie das Modell zur Ansicht übergeben

model.selectedRoleID = _OpsAdminViewModel.userRoleID; 
return View(model); 

und die letzten Parameter in Ihrem SelectList Konstruktor seit seinem sinnlos löschen.

+0

DAS WAR EINFACH !!! Ich komplizierte Dinge, indem ich zwei verschiedene Eigenschaften in meinem Ansichtsmodell (userRoleID und selectedRoleID) habe. Es ist jetzt behoben. DANKE!!! – Anonymous3521