Saya punya model:
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;
}
}
Dan inilah Controller yang memuat view:
//
// GET: /Admin/AddNewUser
public ActionResult AddNewUser()
{
DbUserRoles Roles = new DbUserRoles();
return View(Roles.GetRoles());
}
Saya bisa mendapatkan item dalam daftar untuk ditampilkan menggunakan @foreach
loop seperti yang ditunjukkan di bawah ini:
@foreach (var item in Model)
{
<tr>
<td>
@item.UserRoleId
</td>
<td>
@item.UserRole
</td>
</tr>
}
Tetapi bagaimana cara mengisi daftar dropdown dengan model yang dilalui, saya telah mencoba
@Html.DropDownListFor(x => x.UserRole)
tapi aku tidak beruntung.
var roles = dbUserRoles.GetRoles() ...
ketikaGetRoles
metode terletak di pengontrol, sedangkandbUserRoles
instance dari kelas model?sumber
using System.Linq;
untuk mendapatkan metode Pilih ekstensi.Satu cara mungkin;
sumber
Sesuatu yang dekat dengan:
Anda memerlukan SelectList untuk mengisi DropDownListFor. Untuk atribut HTML apa pun yang Anda butuhkan, Anda dapat menambahkan:
sumber
Alih-alih a
List<UserRole>
, Anda bisa membiarkan Model Anda berisi fileSelectList<UserRole>
. Juga tambahkan propertiSelectedUserRoleId
untuk menyimpan ... yah ... nilai Id UserRole yang dipilih.Isi SelectList, lalu gunakan View Anda:
dan kamu akan baik-baik saja.
Lihat juga http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist(v=vs.108).aspx .
sumber
Panggilan Anda ke
DropDownListFor
membutuhkan beberapa parameter lagi untuk menyempurnakannya. Anda memerlukan SelectList seperti pada pertanyaan SO berikut:MVC3 DropDownListFor - contoh sederhana?
Dengan apa yang Anda miliki di sana, Anda hanya memberi tahu di mana menyimpan data, bukan dari mana memuat daftar.
sumber
sumber
Saya akan mendekati ini seolah-olah Anda memiliki model Pengguna:
Users.cs
dan model DbUserRoles yang merepresentasikan tabel dengan nama tersebut di database:
DbUserRoles.cs
Setelah Anda membersihkannya, Anda hanya dapat membuat dan mengisi koleksi UserRoles, seperti ini, di Controller Anda:
dan memiliki fungsi pendukung ini:
Repository.cs
Fungsi Repositori saya
GetAllUserRoles()
untuk fungsi di atas:AddNewUser.cshtml
Kemudian lakukan ini di View Anda:
sumber
sumber
EmployeeViewModel
danEmployee
, meskipun, untuk menunjukkan objek di sana, dan tipenya.