MVC3 - 掌握DropDownList

时间:2011-08-03 15:29:36

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

我是MVC的新手,所以请耐心等待......

我的新表单\ view工作(创建和添加客户端) 但是现在我想让用户如此指定新客户端来自A下拉列表的国家/地区。但我确定如何做到这一点?

视图模型

public class ClientNew
{
    public string Company { get; set; }
    public string Address { get; set; }
    //New
    public IEnumerable<CountryList> Country{ get; set; }
}

public class CountryList
{
    public string Id { get; set; }
    public string Name { get; set; }
}

控制器 (这可能是错误的,这是最好的方法吗?)

public ActionResult New()
{
    var cl= new List<CountryList>();
    cl.Add(new CountryList(){Id = "abcd",Name = "UK"});
    cl.Add(new CountryList() { Id = "abce", Name = "USA" });
    var model = new ViewModels.ClientNew();
    model.Country= cl;
    return View("New", model);
}

查看(不知道如何探测)

Html.DropDownList("Id" ??????)

3 个答案:

答案 0 :(得分:1)

在您的视图中,您将设置属性ID的下拉列表。这将是POST到表单时在下拉列表中选择的当前值。将用于下拉列表的数据是名为“状态”的SelectList,它存在于您的模型中。

@Html.DropDownListFor(m => m.Id, Model.Countries)

您的视图模型将包含您的ID,名称和国家/地区属性以及您需要的任何其他属性。

public class ClientNewViewModel {
    public string Id { get; set; }
    public string Name { get; set; }

    public SelectList Countries { get; set; }
}

在控制器中,您需要将模型传递给视图。您需要填充Countries SelectList。请记住,在POST和验证失败时,您需要填充此值。

public ActionResult New()
{
     var model = new ClientNewViewModel();

     model.Countries = new SelectList(service.GetCountries(),
         "Id", "Name"); // set up what properties are used for id/name of dropdown

     return View(model);
}

[HttpPost]
public ActionResult New(ClientNewViewModel model)
{
    if( !ModelState.IsValid )
    {
        model.Countries = new SelectList(service.GetCountries(),
            "Id", "Name");

        return View(model);
    }

    // redirect on success
    return RedirectToAction("Index");
}

答案 1 :(得分:0)

Html.DropDownList("Id", 
                  Country.Select(x => new SelectListItem 
                                          { 
                                              Text = x.Name, 
                                              Value = x.Id 
                                          }));

答案 2 :(得分:0)

这里有关于如何做到这一点的好的博客文章 - &gt; http://277hz.co.uk/Blog/Show/10/drop-down-lists-in-mvc--asp-net