0

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

1 回答 1

0

我建议您为视图创建一个视图模型类:

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),并且您需要将角色选择包装到 aSelectList中,因为下拉帮助程序不能将 aIEnumerable用于第二个参数。

于 2013-01-12T16:12:15.200 回答