Asp.net mvc 2 MVC2 SelectedListItem未绑定到ViewModel

Asp.net mvc 2 MVC2 SelectedListItem未绑定到ViewModel,asp.net-mvc-2,viewmodel,selectlistitem,Asp.net Mvc 2,Viewmodel,Selectlistitem,我对selectlistitem有问题,它的值正在从数据库中检索 它在视图中显示项目列表,但不会将选定值传递(过账)到模型中 因此,当用户提交或由于验证而重新加载页面时,select值(PositionApplied)为空 谁能给我指点一下我哪里出了问题 在我的控制器中: [HttpGet] public ActionResult Index() { PopulateJobsDropdown(); return View(); }

我对selectlistitem有问题,它的值正在从数据库中检索

它在视图中显示项目列表,但不会将选定值传递(过账)到模型中

因此,当用户提交或由于验证而重新加载页面时,select值(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;
    }
[HttpGet]
公共行动结果索引()
{
PopulateJobsDropdown();
返回视图();
}
private void PopulateJobsDropdown()
{
IEnumerable items=\u service.GetJobs()
.选择(c=>new SelectListItem
{
Value=c.JobID.ToString(),
Text=c.JobTitle
});
ViewData[“PositionApplied”]=项目;
}
在我的视图模型中

 public IEnumerable<SelectListItem> PositionApplied { get; set; }
public IEnumerable PositionApplied{get;set;}
在我看来

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


提前感谢您的指点

那么,获取

ViewData["PositionApplied"] = items;
进入

public IEnumerable PositionApplied{get;set;}
比如:

this.PositionApplied = ViewData["PositionApplied"] as IEnumerable<SelectListItem>;
this.PositionApplied=ViewData[“PositionApplied”]作为IEnumerable;
您可以在视图中简单使用:

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


或者在MVC2下是否有一些我不知道的自动化事件?我一直在用我给你的例子


已添加

为了避免LINQtoEntities错误(如果您正在使用它),请将方法更改为

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;
}
private void PopulateJobsDropdown()
{
iQueryable作业=_service.GetJobs();
列表项=新列表();
foreach(作业中的var作业)
items.add(新建SelectListItem)
{
Value=c.JobID.ToString(),
Text=c.JobTitle
});
ViewData[“PositionApplied”]=项目;
}

所有这些都可以正常工作。

那么,获取

ViewData["PositionApplied"] = items;
进入

public IEnumerable PositionApplied{get;set;}
比如:

this.PositionApplied = ViewData["PositionApplied"] as IEnumerable<SelectListItem>;
this.PositionApplied=ViewData[“PositionApplied”]作为IEnumerable;
您可以在视图中简单使用:

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


或者在MVC2下是否有一些我不知道的自动化事件?我一直在用我给你的例子


已添加

为了避免LINQtoEntities错误(如果您正在使用它),请将方法更改为

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;
}
private void PopulateJobsDropdown()
{
iQueryable作业=_service.GetJobs();
列表项=新列表();
foreach(作业中的var作业)
items.add(新建SelectListItem)
{
Value=c.JobID.ToString(),
Text=c.JobTitle
});
ViewData[“PositionApplied”]=项目;
}

所有这些都可以正常工作。

我已经尝试过了,但模型仍然为空-没有传递值。。我缺少什么??调试并查看
PositionApplied
变量在控制器中也有什么
ViewData[“PositionApplied”]
,当您到达视图时,我几乎可以肯定您最终会撞到
LINQ to Entities无法识别方法“System.String ToString()”方法,而且这个方法无法转换成存储表达式
问题…不,仍然不起作用。选择列表值未传递到模型中。请尝试此处的所有示例。令人沮丧的是:(我也不能添加这是viewModel,因为它会导致问题:public IEnumerable PositionApplied{get;set;}我已经尝试过了,但是模型仍然为空-没有传递值..我缺少了什么?调试并查看
PositionApplied
变量还有
ViewData[“PositionApplied”]
在控制器中,当您到达视图时,我几乎可以肯定您最终会撞到
LINQ to Entities无法识别方法'System.String ToString()'方法,而此方法无法转换为存储表达式
问题…不,仍然不起作用。选择列表值未传递到模型中。尝试了此处的所有示例。非常令人沮丧:(我无法添加这是viewModel,因为它会导致问题:public IEnumerable PositionApplied{get;set;}