Asp.net mvc 使用viewdata选择值的下拉列表

Asp.net mvc 使用viewdata选择值的下拉列表,asp.net-mvc,html.dropdownlistfor,Asp.net Mvc,Html.dropdownlistfor,我无法在MVC中绑定选定的值。有人能告诉我以下代码有什么问题吗: @Html.DropDownListFor(x => Model.Members[i].OccupationCd, (IEnumerable<SelectListItem>)ViewData["ddl_occupation"], new { @style = "width:100px", @class = "Occupation required" }) public List<Se

我无法在MVC中绑定选定的值。有人能告诉我以下代码有什么问题吗:

@Html.DropDownListFor(x => Model.Members[i].OccupationCd,
   (IEnumerable<SelectListItem>)ViewData["ddl_occupation"], 
   new { @style = "width:100px", @class = "Occupation required" })




 public List<SelectListItem> GetOccupation(string selectedValue)
    {
        List<SelectListItem> selLstOccupation = new List<SelectListItem>();
        selLstOccupation.Add(new SelectListItem { Value = "", Text = "---" + ("Select Occupation") + "---" });
        selLstOccupation.AddRange(GetData.AllOccupation());
        selLstOccupation = GetData.GetSelectedList(selLstOccupation, selectedValue);
        return selLstOccupation;
    }

  public class Member()
  {
  //code
 //code   
   public int educationCd { get; set; }
  }
@Html.DropDownListFor(x=>Model.Members[i].职业CD,
(IEnumerable)ViewData[“ddl_职业”],
新的{@style=“width:100px”,@class=“需要占用”})
公共列表GetOccupation(字符串selectedValue)
{
List SELLSTOCCATION=新列表();
添加(新的SelectListItem{Value=”“,Text=“--”+(“选择职业”)+“--”});
selLstOccupation.AddRange(GetData.AllOccupation());
selLstOccupation=GetData.GetSelectedList(selLstOccupation,selectedValue);
返回性职业;
}
公共类成员()
{
//代码
//代码
公共int教育CD{get;set;}
}
我找到了解决办法:

  @Html.DropDownListFor(x => Model.Members[i].OccupationCd,new SelectList((IEnumerable<SelectListItem>)ViewData["ddl_occupation"],"Value","Text",Model.Members[i].OccupationCd))
@Html.DropDownListFor(x=>Model.Members[i].职业CD,新选择列表((IEnumerable)ViewData[“ddl_职业”],“值”,“文本”,Model.Members[i].职业CD))

要解决问题,您必须做两件事。第一个是使用以下实现更改GetOccupation方法

public List<Occupation> GetOccupation()
{
    return GetData.AllOccupation();
}
公共列表GetOccupation()
{
返回GetData.alloccuption();
}
然后您必须将下拉列表初始化更改为以下内容

@Html.DropDownListFor(x => x.Members[i].OccupationCd,
   new SelectList(
       (IEnumerable<Occupation>)ViewData["ddl_occupation"], 
       "OccupationCd",
       "@@HERE YOU ADD THE PROPERTY YOU WANT TO VISUALIZE@@",
       Model.Members[i].OccupationCd),
   "---Select Occupation--",
   new { @style = "width:100px", @class = "Occupation required" })
@Html.DropDownListFor(x=>x.Members[i].职业CD,
新选择列表(
(IEnumerable)ViewData[“ddl_职业”],
“职业CD”,
“在这里,您添加了要可视化的属性@@@1”,
模型.成员[i].职业CD),
“---选择职业--”,
新的{@style=“width:100px”,@class=“需要占用”})

这应该可以解决您的问题。

什么都没有发生吗?您能给我看一下设置视图数据[“ddl_职业”]的代码吗。您还知道,第一个参数用于要选择的id。没有用于加载dropdownlist的模型。但要选择的值在名为member的模型中,您的解决方案中缺少括号<代码>新选择列表(IEnumerable应该是
新选择列表((IEnumerable
你是对的。更改完成我编辑了我的答案。你能检查一下这个方法吗。我想你会设置ViewData[“ddl_职业”]=GetOccupations()。还有一件事,别忘了用实际值替换@@这里添加了要可视化的属性@@。你是对的。但是不需要更改getoccupation实现。请参见上文。无论如何,我将其标记为正确。