Ich habe ein Modell:
public class DbUserRole
{
public int UserRoleId { get; set; }
public string UserRole { get; set; }
}
public class DbUserRoles
{
public List<DbUserRole> GetRoles()
{
BugnetReports RoleDropDown = new BugnetReports();
List<DbUserRole> Roles = new List<DbUserRole>();
DataSet table = RoleDropDown.userRoleDropDown();
foreach (DataRow item in table.Tables[0].Rows)
{
DbUserRole ur = new DbUserRole();
ur.UserRole = Convert.ToString(item["UserRoleName"]);
ur.UserRoleId = Convert.ToInt32(item["UserRoleID"]);
Roles.Add(ur);
}
return Roles;
}
}
Und hier ist der Controller, der die Ansicht lädt:
//
// GET: /Admin/AddNewUser
public ActionResult AddNewUser()
{
DbUserRoles Roles = new DbUserRoles();
return View(Roles.GetRoles());
}
Ich kann die Elemente in der Liste mithilfe einer @foreach
Schleife wie unten gezeigt anzeigen lassen :
@foreach (var item in Model)
{
<tr>
<td>
@item.UserRoleId
</td>
<td>
@item.UserRole
</td>
</tr>
}
Aber wie fülle ich eine Dropdown-Liste mit dem Modell, das durchlaufen wird, habe ich versucht
@Html.DropDownListFor(x => x.UserRole)
aber ich habe kein Glück.
var roles = dbUserRoles.GetRoles() ...
wenn sich dieGetRoles
Methode im Controller befindet, währenddbUserRoles
sich eine Instanz der Modellklasse befindet?quelle
using System.Linq;
um die Select-Erweiterungsmethode zu erhalten.Ein Weg könnte sein;
quelle
Etwas in der Nähe von:
Sie benötigen eine SelectList, um die DropDownListFor zu füllen. Für alle benötigten HTML-Attribute können Sie Folgendes hinzufügen:
quelle
Anstelle von a
List<UserRole>
können Sie Ihr Modell a enthalten lassenSelectList<UserRole>
.SelectedUserRoleId
Fügen Sie außerdem eine Eigenschaft hinzu , um ... nun ... den ID-Wert der ausgewählten UserRole zu speichern.Füllen Sie die SelectList aus und verwenden Sie in Ihrer Ansicht Folgendes:
und es sollte dir gut gehen.
Siehe auch http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist(v=vs.108).aspx .
quelle
Ihr Aufruf an
DropDownListFor
benötigt ein paar weitere Parameter, um ihn zu konkretisieren. Sie benötigen eine SelectList wie in der folgenden SO-Frage:MVC3 DropDownListFor - ein einfaches Beispiel?
Mit dem, was Sie dort haben, haben Sie nur angegeben, wo die Daten gespeichert werden sollen, nicht, wo die Liste geladen werden soll.
quelle
quelle
Ich gehe so vor, als hätten Sie ein Benutzermodell:
Users.cs
und ein DbUserRoles-Modell, das eine Tabelle mit diesem Namen in der Datenbank darstellt:
DbUserRoles.cs
Sobald Sie dies bereinigt haben, sollten Sie in der Lage sein, eine Sammlung von Benutzerrollen wie diese in Ihrem Controller zu erstellen und zu füllen:
und haben diese unterstützenden Funktionen:
Repository.cs
Meine Repository-Funktion
GetAllUserRoles()
für die Funktion oben:AddNewUser.cshtml
Dann machen Sie dies in Ihrer Ansicht:
quelle
quelle
EmployeeViewModel
undEmployee
jedoch die Objekte dort und ihre Typen anzeigen.