.NET MVC - 下拉列表显示对象

时间:2015-03-18 20:03:08

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

我对MVC比较陌生,所以请原谅我可能有些愚蠢的问题,但我正在尝试根据视图模型填充下拉列表。我可以使用VM来填充列表视图而不会出现问题,但是当我尝试渲染下拉列表时,我遇到了问题。

我得到了一个程序列表:

public IEnumerable<ProgramList> GetAllProgramsList()
{
    // Fetch from the data store
    var fetchedObjects = ds.Programs.OrderBy(nm => nm.Name).AsEnumerable();

    return Mapper.Map<IEnumerable<ProgramList>>(fetchedObjects);

}

将它们映射到ProgramList:

public class ProgramList
{
    public int Id { get; set; }
    public string Name { get; set; }
}

将该列表传递给控制器​​并填写表单VM:

public ActionResult Create()
{
    var addForm = new SuggestionAddForm();
    addForm.Program = new SelectList(m.GetAllProgramsList(), "Name");

    return View(addForm);
}

然后以HTML格式呈现:

 @Html.DropDownList("SupplierId", Model.Program)

基本上我得到的是一个看起来像的对象列表:

Suggestions.Controllers.ProgramList

在下拉列表中。我不能让它呈现任何属性,如ID或名称字段。我到底在哪里错了?

谢谢!

2 个答案:

答案 0 :(得分:4)

只需改变一下:

public ActionResult Create()
{
    var addForm = new SuggestionAddForm();
    addForm.Program = new SelectList(m.GetAllProgramsList(),"Id", "Name");

    return View(addForm);
}

你忘记了&#34; Id&#34;

答案 1 :(得分:0)

您是否尝试过使用

@Html.DropDownListFor(m => m.Program, Model.Program) 

http://odetocode.com/blogs/scott/archive/2013/03/11/dropdownlistfor-with-asp-net-mvc.aspx