1

我遇到了一个 selectlistitem 的问题,它的值是从数据库中检索的。

它在视图中显示项目列表,但它没有将选定的值传递(发布)到模型中。

所以当用户提交,或者页面由于验证而重新加载时,选择值(PositionApplied)为空。

谁能给我一些关于我哪里出错的指示?

在我的控制器中:

    [HttpGet]
    public ActionResult Index()
    {
        PopulateJobsDropdown();
        return View();
    }

    private void PopulateJobsDropdown()
    {
        IEnumerable<SelectListItem> items = _service.GetJobs()
            .Select(c => new SelectListItem
                             {
                                 Value = c.JobID.ToString(),
                                 Text = c.JobTitle
                             });
        ViewData["PositionApplied"] = items;
    }

在我的视图模型中

 public IEnumerable<SelectListItem> PositionApplied { get; set; }

在我看来

<%=Html.DropDownList("PositionApplied")%>

提前感谢您的任何指点!

4

1 回答 1

1

那么,获取的代码行在哪里

ViewData["PositionApplied"] = items;

进入

public IEnumerable<SelectListItem> PositionApplied { get; set; }

就像是:

this.PositionApplied = ViewData["PositionApplied"] as IEnumerable<SelectListItem>;

你可以在你的视图中简单地使用:

<%
    IEnumerable<SelectListItem> PositionApplied = 
          ViewData["PositionApplied"] as IEnumerable<SelectListItem>;
%>

...

<%= Html.DropDownList("myDropDOwnId", PositionApplied) %>

或者在 MVC2 下是否有一些我不知道的自动发生的事情?当我使用我给你的例子时,一直。


添加

为了避免 Linq to Entities 错误(如果您正在使用它)将您的方法更改为

private void PopulateJobsDropdown()
{
    IQueryble<Your_Table> jobs = _service.GetJobs();
    List<SelectListItem> items = new List<SelectListItem>();
    foreach(var job in jobs)
        items.add(new SelectListItem
                      {
                         Value = c.JobID.ToString(),
                         Text = c.JobTitle
                      });
    ViewData["PositionApplied"] = items;
}

一切都会好起来的。

于 2011-02-16T10:59:34.287 回答