【问题标题】:.NET MVC - Drop Down List is Showing Objects.NET MVC - 下拉列表显示对象
【发布时间】:2015-03-19 04:07:01
【问题描述】:

我对 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 或 Name 字段。我到底哪里错了?

谢谢!

【问题讨论】:

  • 试试@Html.DropDownListFor(m => m.Program)
  • VS 将其标记为不正确的语法...
  • '方法'DropDownListFor'没有过载需要1个参数'
  • @Html.DropDownListFor(m => m.Program, Model.Program)

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


【解决方案1】:

只要改变这个:

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

    return View(addForm);
}

你只是忘记了“Id”

【讨论】:

  • 这发生在所有人身上!!很高兴为您提供帮助!
【解决方案2】:

您是否尝试过使用

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

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

【讨论】:

    猜你喜欢
    • 2013-08-07
    • 2020-07-25
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多