0

以下は私のモデルです。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ビューで2番目のドロップダウンリストをバインドするにはどうすればよいですか?

4

2 に答える 2

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", new SelectList((IEnumerable) ViewData["tempEmpList"], "Id", "Name"))**

于 2016-12-15T08:49:27.417 に答える
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");

ブランドを選択したときに役割を変更したい場合は、これを行うことができます。

コントローラーに 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);
    }

インデックス.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>
于 2016-07-06T05:42:40.230 に答える