创建只有两个选项的下拉列表

时间:2015-12-01 01:15:00

标签: asp.net-mvc asp.net-mvc-5

我有一个应用程序,可以让用户创建两种类型的图表:条形图和折线图。因此,在创建和编辑页面上,我想显示一个带有这些选项的简单下拉字段(如果它是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" })

但是当我点击保存时,它不会更新。 (而且我也认为将选项硬编码到视图中就好,这不是一种好的做法。)

1 个答案:

答案 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