我有一个应用程序,可以让用户创建两种类型的图表:条形图和折线图。因此,在创建和编辑页面上,我想显示一个带有这些选项的简单下拉字段(如果它是Create.cshtml,则显示为默认值)。
我想在我的Charts模型中保留业务逻辑,所以我这样做了:
public class Chart {
public int ChartID { get; set; }
public ChartType TypeOfChart { get; set; }
public enum ChartType {
Bar,
Line
}
}
我的想法是,当我在我的应用中实现新的图表类型时,我会添加到此枚举属性,并且它会从那里传播到所有视图。
然后在我的Edit.cshtml中,我这样做了:
@Html.DropDownListFor(model => model.TypeOfChart, new SelectList(Enum.GetValues(typeof(ChartType))), new { @class = "form-control" })
但是,在上面一行中,它给出了一个错误:
The type or namespace name 'ChartType' could not be found (are you missing a using or assembly reference?)
有更简单的方法吗?我觉得这应该是非常容易做到的,但是我已经花了好几个小时来处理它。
如果我这样做,它会起作用:
@Html.DropDownListFor(model => model.TypeOfChart, new SelectList(new string[] {"Bar", "Line"}),new { @class = "form-control" })
但是当我点击保存时,它不会更新。 (而且我也认为将选项硬编码到视图中就好,这不是一种好的做法。)
答案 0 :(得分:1)
您ChartType
枚举嵌套在Chart
类中,因此您需要使用Chart.ChartType
@Html.DropDownListFor(m => m.TypeOfChart, new SelectList(Enum.GetValues(typeof(Chart.ChartType))), new { @class = "form-control" })
从评论中,您还有另一个名为Chart
的程序集,在这种情况下,您需要完全限定名称
MyProject.Models.Chart.ChartType