如何在MVC3中的ActionResult中添加多个Dropdownlist

时间:2012-10-15 13:05:55

标签: asp.net-mvc-3 html.dropdownlistfor

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

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);
        }

1 个答案:

答案 0 :(得分:1)

尽量避免使用ViewData方法。切换到强类型的方法。向View Model添加另一个属性以再携带一个下拉项

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);
}

其中GetCountryItemsGetProfileItems是2个方法,它们返回国家/地区的SelectListItem对象列表和db。

不要让您的控制器成为FAT。保持简单和干净。移走从存储库获取数据到不同层的代码。易于阅读和维护:)

在你的强类型视图中,

@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" />
}