MVC 3.下拉框

时间:2013-01-12 15:58:44

标签: asp.net-mvc-3

嗨,我是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;
        }

1 个答案:

答案 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第二个参数。