У меня есть модель:
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;
}
}
А вот контроллер, который загружает представление:
//
// GET: /Admin/AddNewUser
public ActionResult AddNewUser()
{
DbUserRoles Roles = new DbUserRoles();
return View(Roles.GetRoles());
}
Я могу получить элементы в списке для отображения с помощью @foreach
цикла, как показано ниже:
@foreach (var item in Model)
{
<tr>
<td>
@item.UserRoleId
</td>
<td>
@item.UserRole
</td>
</tr>
}
Но как мне заполнить раскрывающийся список моделью, которая прошла, я пробовал
@Html.DropDownListFor(x => x.UserRole)
но мне не повезло.
источник
var roles = dbUserRoles.GetRoles() ...
когдаGetRoles
метод находится в контроллере, аdbUserRoles
является экземпляром класса модели?источник
using System.Linq;
чтобы получить метод расширения Select.Один из способов может быть;
источник
Что-то близкое к:
Вам нужен SelectList для заполнения DropDownListFor. Для любых необходимых HTML-атрибутов вы можете добавить:
источник
Вместо a
List<UserRole>
вы можете позволить вашей модели содержатьSelectList<UserRole>
. Также добавьте свойствоSelectedUserRoleId
для хранения ... ну ... значения Id выбранного UserRole.Заполните SelectList, затем в своем представлении используйте:
и все должно быть в порядке.
См. Также http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist(v=vs.108).aspx .
источник
Вашему вызову
DropDownListFor
нужно еще несколько параметров, чтобы конкретизировать его. Вам нужен SelectList, как в следующем вопросе SO:MVC3 DropDownListFor - простой пример?
С тем, что у вас есть, вы только сказали ему, где хранить данные, а не откуда загрузить список.
источник
источник
Я собираюсь подойти к этому так, как если бы у вас есть модель Users:
Users.cs
и модель DbUserRoles, которая представляет таблицу с этим именем в базе данных:
DbUserRoles.cs
После того, как вы очистили это, вы просто сможете создать и заполнить коллекцию UserRoles, например, в своем контроллере:
и имеют следующие вспомогательные функции:
Repository.cs
Моя функция репозитория
GetAllUserRoles()
для функции, приведенной выше:AddNewUser.cshtml
Затем сделайте это в своем представлении:
источник
источник
EmployeeViewModel
иEmployee
, правда, чтобы показать там объекты и их типы.