Asp.net mvc 使用@Html.DropDownListFor时出现异常

Asp.net mvc 使用@Html.DropDownListFor时出现异常,asp.net-mvc,Asp.net Mvc,我收到的错误消息是: System.Web.Mvc.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理 其他信息:模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式 以下是具体的下拉列表: @Html.DropDownListFor(model => new SelectList(model.DropDownList), Model.DropDownList, new { id = "SelectedComp

我收到的错误消息是:

System.Web.Mvc.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理

其他信息:模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式

以下是具体的下拉列表:

@Html.DropDownListFor(model => new SelectList(model.DropDownList), Model.DropDownList, new { id = "SelectedCompanyId" })
以下是视图模型:

public class RegisterViewModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [System.ComponentModel.DataAnnotations.Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }

        public SelectList DropDownList { get; set; }
        public int SelectedCompanyId { get; set; }  
    }
模型如下:

public class ApplicationUser : IdentityUser
    {
        public virtual Company Company { get; set; }
        public int CompanyId { get; set; }
    }
最后是控制器

 [AllowAnonymous]
    public ActionResult Register()
    {
        var list = new List<SelectListItem>();
        using (var db = new PortalDbContext())
        {
            list = db.Companys.ToList().Select(x => new SelectListItem {Text = x.Name, Value = x.Id.ToString()}).ToList();
        }
        var returnList = new SelectList(list);
        var model = new RegisterViewModel() { DropDownList = returnList };


        return View(model);
    }
[AllowAnonymous]
公众行动结果登记册()
{
var list=新列表();
使用(var db=new PortalDbContext())
{
list=db.Companys.ToList().Select(x=>newselectListItem{Text=x.Name,Value=x.Id.ToString()).ToList();
}
var returnList=新选择列表(列表);
var model=newregisterviewmodel(){DropDownList=returnList};
返回视图(模型);
}

lambda表达式应该选择模型的一个成员来存储值<代码>新建选择列表(model.DropDownList)不是该型号的成员

如果要在其中存储值的成员是
SelectedCompanyId
,则

@Html.DropDownListFor(m => m.SelectedCompanyId, Model.DropDownList)

这更有意义,但让我困惑的是,两个下拉列表都显示System.Web.Mvc.SelectListItem,然后当我尝试注册时,它会显示“字段SelectedCompanyId必须是一个数字。”这是因为它必须是
var returnList=new SelectList(db.Companys,“Id”,“Name”)
Register()
方法中删除前5行。