MVC3中的DropDownListFor

sir*_*iri 3 asp.net-mvc-3

好的,首先,我是ASP.NET MVC的新手.现在我想在C#Razor视图中添加一个下拉列表.问题是,无论如何直接将List()分配给@ Html.DropDownListFor ......?MyClass就是这样的

public class MyClass
{
  public int ID {get; set;}
  public string Itemstring {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

ViewModel是这样的

public class MyViewModel
{
  public int ID { get; set; }
  public List<MyClass> MyClassList {get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器动作方法是这样的

public ActionResult Home()
{
MyViewModel mvm = new MyViewModel () {
new MyClass() { ID=1, Itemstring="My Item1" },
new MyClass() { ID=2, Itemstring="My Item2" },
new MyClass() { ID=3, Itemstring="My Item3" }
}
}
Run Code Online (Sandbox Code Playgroud)

在视图:这是我不确定如何使用

@model xyzNameSpace.Models.MyViewModel
<div>
@Html.DropDownListFor(x => x.ID, Model.MyClassList);
<a href="@Url.Action("Selected")><img src="../../Content/images/selected.gif" alt="Proceed" /> </a>
</div>
Run Code Online (Sandbox Code Playgroud)

- 因此,当用户从下拉列表中选择一个项目并单击图像时,它应该调用(或调用不确定使用哪个词)控件中的"已选择"操作,它应该将模型与选定值绑定,可能有人帮助我这该怎么做...?

谢谢Siri.

Dmi*_*try 5

Html.DropDownListFor有6个重载,所有这些重载都IEnumerable<SelectListItem>作为保存值的参数.你不能无法使用自己的类,这就是你在Kyle尝试解决时遇到错误的原因.

将此添加到您的模型:

public List<SelectListItem> ListToUse { get; set; }
Run Code Online (Sandbox Code Playgroud)

控制器:

MyViewModel model = new MyViewModel();
model.MyClassList = new List<MyClass>
{
    new MyClass() { ID=1, Itemstring="My Item1" },
    new MyClass() { ID=2, Itemstring="My Item2" },
    new MyClass() { ID=3, Itemstring="My Item3" }
}
model.ListToUse = model.MyClassList
    .Select(x => new SelectListItem{ Value = x.ID, Text = x.Itemstring })
    .ToList();
Run Code Online (Sandbox Code Playgroud)

在视图中:

@Html.DropDownListFor(x => x.ID, Model.ListToUse);
Run Code Online (Sandbox Code Playgroud)

我没有测试这段代码.