C# 没有类型为';IEnumerable';那有钥匙';x'';
在我看来,我有一个问题,我的dropdownlist失败,不工作,不知道为什么C# 没有类型为';IEnumerable';那有钥匙';x'';,c#,asp.net-mvc,razor,drop-down-menu,view,C#,Asp.net Mvc,Razor,Drop Down Menu,View,在我看来,我有一个问题,我的dropdownlist失败,不工作,不知道为什么 @model DigikalaHR.View_Model.Entitys.Member . . . . <div class="form-group"> @Html.LabelFor(model => model.TeamId, "TeamId", htmlAttributes: new { @class = "control-label col-md-2" })
@model DigikalaHR.View_Model.Entitys.Member
.
.
.
.
<div class="form-group">
@Html.LabelFor(model => model.TeamId, "TeamId", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TeamId",null,htmlAttributes: new {@clas="form-control" })
@Html.ValidationMessageFor(model => model.TeamId, "", new { @class = "text-danger" })
</div>
</div>
这是我收到的错误
无法将lambda表达式转换为类型“IEnumerable”,因为它不是委托类型
这也是我在控制器中的创建方法
#region [- Create() -]
#region [- Get -]
public ActionResult Create()
{
return View();
}
#endregion
#region [- Post -]
// POST: Member/Create
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Create(string _fName, string _lName, string _describtion, string _pic, int _teamId, int _positionId)
{
try
{
// TODO: Add insert logic here
Ref_Member = new View_Model.Buisiness.Member();
//Ref_Member.CreateMember();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
这是我传递到视图中的视图模型
#region [- Id -]
[ScaffoldColumn(true)]
[DisplayName("شماره")]
public int Id { get; set; }
#endregion
#region [- FName -]
[DisplayName("نام")]
[Required(ErrorMessageResourceType = typeof(Resources.Messages), ErrorMessageResourceName = "Required")]
[StringLength(100, ErrorMessageResourceType = typeof(Resources.Messages), ErrorMessageResourceName = "StringLength")]
public string FirstName { get; set; }
#endregion
#region [- LName -]
[DisplayName("نام خانوادگی ")]
[Required(ErrorMessageResourceType = typeof(Resources.Messages), ErrorMessageResourceName = "Required")]
[StringLength(100, ErrorMessageResourceType = typeof(Resources.Messages), ErrorMessageResourceName = "StringLength")]
public string LastName { get; set; }
#endregion
#region [- Describtion -]
[DataType(DataType.MultilineText)]
[DisplayName("توضیحات")]
public string Description { get; set; }
#endregion
#region [- Pic -]
[DisplayName("عکس")]
[Required(AllowEmptyStrings =false,ErrorMessageResourceType =typeof(Resources.Messages), ErrorMessageResourceName = "Required")]
public string Pic { get; set; }
#endregion
#region [- TeamId -]
[DisplayName("شماره تیم")]
public Nullable<int> TeamId { get; set; }
#endregion
#region [- PositionId -]
[DisplayName("شماره سرپرست")]
public int PositionId { get; set; }
#endregion
#region [- Departments -]
[DisplayName("دپارتمان")]
public ICollection<Department> Departments { get; set; }
#endregion
public Position Position { get; set; }
public Team Team { get; set; }
public ICollection<Team> Teams { get; set; }
}
#区域[-Id-]
[脚手架立柱(正确)]
[显示名称(“显示名称”)]
公共int Id{get;set;}
#端区
#区域[-FName-]
[显示名称(“نام”)]
[必需(ErrorMessageResourceType=typeof(Resources.Messages),ErrorMessageResourceName=“必需”)]
[StringLength(100,ErrorMessageResourceType=typeof(Resources.Messages),ErrorMessageResourceName=“StringLength”)]
公共字符串名{get;set;}
#端区
#区域[-LName-]
[显示名称(“显示名称”)]
[必需(ErrorMessageResourceType=typeof(Resources.Messages),ErrorMessageResourceName=“必需”)]
[StringLength(100,ErrorMessageResourceType=typeof(Resources.Messages),ErrorMessageResourceName=“StringLength”)]
公共字符串LastName{get;set;}
#端区
#区域[-描述-]
[数据类型(DataType.multilitext)]
[显示名称(“显示名称”)
公共字符串说明{get;set;}
#端区
#区域[-Pic-]
[显示名称(“عکس”)]
[必需(AllowEmptyStrings=false,ErrorMessageResourceType=typeof(Resources.Messages),ErrorMessageResourceName=“必需”)]
公共字符串Pic{get;set;}
#端区
#区域[-TeamId-]
[显示名称(“显示名称”)
公共可为空的TeamId{get;set;}
#端区
#区域[-PositionId-]
[显示名称(“显示名称”)]
public int PositionId{get;set;}
#端区
#区域[-部门-]
[显示名称(“显示名称”)
公共ICollection部门{get;set;}
#端区
公共位置位置{get;set;}
公共团队{get;set;}
公共ICollection团队{get;set;}
}
好吧,根据您收到的错误消息:无法将lambda表达式转换为类型“IEnumerable”,因为它不是委托类型
,您的@Html.DropDownList
调用似乎希望该参数中包含一个集合,但您提供的是单个值
如果您查看,我想您会发现它确认了错误消息已经告诉您的内容:它需要一个IEnumerable
,但您只提供了一个项
提供了一些不错的代码示例。以下是一个例子:
@Html.DropDownList("StudentGender",
new SelectList(Enum.GetValues(typeof(Gender))),
"Select Gender",
new { @class = "form-control" })
注意使用了Enum.GetValues
,它生成了一个IEnumerable
要将其绑定到表单中的字段,需要以下内容:
@Html.DropDownListFor(m => m.StudentGender,
new SelectList(Enum.GetValues(typeof(Gender))),
"Select Gender")
进一步阅读它真的应该是
@clas=
,而不是@class=
?@RobertHarvey我修复了它,但仍然得到了相同的错误,根据您收到的错误消息:无法将lambda表达式转换为类型“IEnumerable”,因为它不是委托类型
,似乎您的@Html.DropDownList
调用需要该参数中有一个集合,但您提供的是一个值。如果您查看,我想您会发现它确认了错误消息已经告诉您的内容:它需要一个IEnumerable
,但是你只提供了一个项目。@RobertHarvey,但它是一个表单,必须简单且单一,而不是一个集合谢谢,但应该使用什么来代替性别,这取决于你的模型是什么样子。我将编辑我的问题。你的模型中似乎没有合适的列表,你可以用来填充所以我应该填写一个列表,然后传递它,而不是Gender
@Html.DropDownListFor(m => m.StudentGender,
new SelectList(Enum.GetValues(typeof(Gender))),
"Select Gender")