MVC3中的DropDownListFor

时间:2012-04-03 18:34:26

标签: 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;}
}

ViewModel就像这样

public class MyViewModel
{
  public int ID { get; set; }
  public List<MyClass> MyClassList {get; set; }
}

控制器动作方法就像这样

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

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

@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>

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

谢谢 Siri的。

3 个答案:

答案 0 :(得分:5)

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

将此添加到您的模型中:

public List<SelectListItem> ListToUse { get; set; }

控制器:

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

在视图中:

@Html.DropDownListFor(x => x.ID, Model.ListToUse);

我没有测试此代码。

答案 1 :(得分:1)

如果我理解正确,您希望在单击“继续”按钮时将下拉列表中的所选项目发布到服务器?

您需要使用表单来执行此操作:

@model xyzNameSpace.Models.MyViewModel
@using(Html.BeginForm())
{
    <div>
    @Html.DropDownListFor(x => x.ID, Model.MyClassList);

    <input type="submit" value="Proceed" />
    </div>
}

答案 2 :(得分:1)

在模型中

    public class modelname
            {
              public selectlist getdropdown()
               {
                  IEnumerable<SelectListItem> EntityList = edmx.tblEntities.AsEnumerable().Select(a => new SelectListItem { Text = a.name, Value = a.id.ToString() }).ToList();
                   return new SelectList(EntityList, "Value", "Text");             

 }
        }

在视图中

@Html.DropDownListFor(model => model.source_entity, Model.getdropdown(), "--Select--")
控制器中的

public ActionResult home()
        {
            return View(new modelname());
        }