0

我想添加另一个下拉列表。下面的代码适用于一个下拉列表,但我如何为类别添加一个?

public  ActionResult Create()
        {
            var ddl = new Users();
            ddl.DropDowns = userRepository.Getddl("Departments").Select(c => new SelectListItem
                                                                    {
                                                                        Value = c.DropdownID.ToString(),
                                                                        Text = c.DropdownText
                                                                    });


            ViewData["ListofProfiles"] = new SelectList(ListofProfiles, "Value", "Text");

            return View(ddl);
        }
4

1 回答 1

1

尽量避免使用这种ViewData方法。切换到强类型的方法。将另一个属性添加到您的视图模型以携带更多下拉项

public class User
{
  public int SelectedCountry { set;get;}
  public int SelectedProfile { set;get;}
  public List<SelectListItem> Countries  {set;get;}
  public List<SelectListItem> Profiles {set;get;}

  public User()
  {
     Countries =new List<SelectListItem>(); 
     Profiles =new List<SelectListItem>(); 
  }
}

GET现在在您的操作中设置集合

public ActionResult Create()
{
  var vm=new User();
  vm.Countries=GetCountryItems();
  vm.Profiles=GetProfileItems();  
  return View(vm);
}

WhereGetCountryItemsGetProfileItemsare 2 方法从 db 返回国家和配置文件的 SelectListItem 对象列表。

不要让你的控制器发胖。只要保持简单和干净。将您从存储库中获取数据的代码移到不同的层。易于阅读和维护:)

在你的强类型视图中,

@mode User
@using(Html.BeginForm())
{
  @Html.DropDownListFor(m => m.SelectedCountry,
                     new SelectList(Model.Countries, "Value", "Text"), "Select")
  @Html.DropDownListFor(m => m.SelectedProfile,
                     new SelectList(Model.Profiles, "Value", "Text"), "Select")
 <input type="submit" />
} 
于 2012-10-15T13:14:24.127 回答