我创建了一个创建模型的视图。模型有枚举字段,如下所示:
public ProjectType ProjectType { get; set; }
public enum ProjectType : int
{
type1= 1,
type2 = 2,
type3 = 3,
other = 4
}
在视图中,我这样显示:
<div class="form-group">
@Html.LabelFor(m => m.ProjectType, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.ProjectType,Model.ProjectType, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.ProjectType)
</div>
</div>
当我试图达到此视图时,我收到错误:
没有任何论据符合所要求的形式 参数'htmlAttributes'的
'IHtmlHelper<Project>.DropDownListFor<TResult>(Expression<Func<Project, TResult>>, IEnumerable<SelectListItem>, string, object)'
我尝试通过创建Html帮助程序解决这个问题,但我需要使用System.Web.Mvc,但我可以将其添加到.net核心项目中 还有其他解决办法吗?
答案 0 :(得分:1)
我认为您无法将枚举直接绑定到下拉列表。
尝试添加一个帮助器构造,如List<SelectListItem>
,你可以绑定下拉列表。
public class ProjectViewModel
{
public ProjectViewModel()
{
ProjectTypes = new List<SelectListItem>();
}
public string SelectedProject { get; set; }
public List<SelectListItem> ProjectTypes { get; set; }
}
你可以在你的视图中使用它,如:
@model ProjectViewModel
<select asp-for="SelectedProject" asp-items="@(Model.ProjectTypes)">
<option>Please select one</option>
</select>
这应该导致这个结果:
枚举类保持不变
public enum ProjectType : int
{
type1 = 1,
type2 = 2,
type3 = 3,
other = 4
}