嗨,我是MVC 3的初学者。我试图在视图中创建一个新的下拉框但是我收到错误说''System.Web.Mvc.HtmlHelper'不包含'DropDownListFor'的定义和最好的扩展方法重载'System.Web。 Mvc.Html.SelectExtensions.DropDownListFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>,System.Collections.Generic.IEnumerable)'有一些无效的参数“。
这是查看代码
<tr>
<td>
<label>
Customer Name
</label>
</td>
<td>
@Html.DropDownListFor(A => A.Roles, Model.Roles);
</td>
</tr>
控制器代码
public ActionResult Index()
{
var Model = new Customer();
Model.Roles = getRoles();
return View(Model);
}
private List<string> getRoles()
{
List<string> roles = new List<string>
{
"Developer",
"Tester",
"Project Manager",
"Team Lead",
"QA"
};
return roles;
}
答案 0 :(得分:0)
Firdt我建议您为视图创建一个viewmodel类:
public class IndexViewModel
{
public IList<string> Roles { get; set; }
public string SelectedRole { get; set; }
}
然后像这样调用视图:
public ActionResult Index()
{
List<string> roles = new List<string>
{
"Developer",
"Tester",
"Project Manager",
"Team Lead",
"QA"
};
var viewModel = new IndexViewModel();
viewModel.Roles = roles;
return this.View(viewModel);
}
最后,渲染下拉列表:
@model Mvc4.Controllers.IndexViewModel
@Html.DropDownListFor(model => model.SelectedRole, new SelectList(Model.Roles))
您需要一个变量来存储所选项目(SelectedRole
),并且您需要将选择的角色包装到SelectList
中,因为下拉帮助程序无法使用IEnumerable
第二个参数。