以下是我的模特。我在mvc中创建表中的下拉列表,但是我收到此错误
public class UserRegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
public IEnumerable<Role> Roles { get; set; }
public SelectList RoleSelectList { get; set; }
public Role Role { get; set; }
private List<Role> GetRoles()
{
List<Role> roles = new List<Role>();
roles.Add(new Role() { Value = "c", RoleCode = "Corporate" });
roles.Add(new Role() { Value = "d", RoleCode = "Divisional" });
roles.Add(new Role() { Value = "r", RoleCode = "Regional" });
roles.Add(new Role() { Value = "f", RoleCode = "Facility" });
roles.Add(new Role() { Value = "s", RoleCode = "Resource" });
return roles;
}
public UserRegisterModel()
{
this.Roles = GetRoles();
this.RoleSelectList = new SelectList(Roles, "Value", "RoleCode");
}
public IEnumerable<UserAccinfo> UserAccounts { get; set; }
}
public class UserAccinfo
{
public string accountno { get; set; }
public IEnumerable<Brand> Brands { get; set; }
public SelectList BrandSelectList { get; set; }
public Brand Brand { get; set; }
private List<Brand> GetBrands()
{
List<Brand> brands = new List<Brand>();
brands.Add(new Brand() { BrandValue = "c", BrandCode = "Corporate" });
brands.Add(new Brand() { BrandValue = "d", BrandCode = "Divisional" });
brands.Add(new Brand() { BrandValue = "r", BrandCode = "Regional" });
brands.Add(new Brand() { BrandValue = "f", BrandCode = "Facility" });
brands.Add(new Brand() { BrandValue = "s", BrandCode = "Resource" });
return brands;
}
public UserAccinfo()
{
this.Brands = GetBrands();
this.BrandSelectList = new SelectList(Brands, "BrandValue", "BrandCode");
}
}
public class Brand
{
public string BrandCode { get; set; }
public string BrandValue { get; set; }
}
public class Role
{
public string RoleCode { get; set; }
public string Value { get; set; }
}
如何在mvc视图中绑定第二个下拉列表?
答案 0 :(得分:0)
在控制器中:
public ActionResult Index()
{
UserRegisterModel UserRegisterModel = new UserRegisterModel();
UserAccinfo UserAccinfo = new UserAccinfo();
ViewBag.Brands = UserAccinfo.BrandSelectList;
ViewBag.Roles = UserRegisterModel.RoleSelectList;
return View();
}
和Index.cshtml
@Html.DropDownList("Brands");
@Html.DropDownList("Roles");
如果您想在所选品牌中更改角色 你可以这样做。
在Controller中添加JsonResult:
public JsonResult LoadRoles(string v)
{
UserRegisterModel UserRegisterModel = new UserRegisterModel();
List<KeyValuePair<string, string>> items = new List<KeyValuePair<string, string>>();
if (!string.IsNullOrWhiteSpace(v))
{
var roles = UserRegisterModel.RoleSelectList.Where(x => x.Value == v);
if (roles.Count() > 0)
{
foreach (var r in roles)
{
items.Add(new KeyValuePair<string, string>(r.Value,r.Text));
}
}
}
return Json(items);
}
Index.cshtml
<script>
$(function () {
//When Brands change
$("#Brands").change(function () {
$.ajax({
//Call postback
url: '@Url.Action("LoadRoles", "Home")',
data: { v: $(this).val() },
type: 'post',
cache: false,
dataType: 'json',
success: function (data) {
if (data.length > 0) {
$('#Roles').empty();
//add result to downlist
$.each(data, function (i, item) {
$('#Roles').append($('<option></option>').val(item.Key).text(item.Value));
});
}
}
});
});
});
</script>
答案 1 :(得分:0)
public ActionResult AllUsers() {
List<Users> users = userRep.GetUsers();
var listUsers = (from u in users.AsEnumerable()
select new SelectListItem
{
Text = u.UserName,
Value = u.UserId.ToString(),
Selected = (u.UserId==6)
}).AsEnumerable();
// ViewBag.ListItems = listUsers;
ViewData["tempEmpList"]=listUsers
//ViewBag.SelectedItem = 2;
return View(); }
观看
@ Html.DropDownList(“SelectedEmployee”,新的SelectList((IEnumerable)ViewData [“tempEmpList”],“Id”,“Name”))**