Asp.net mvc 4 多选择枚举

Asp.net mvc 4 多选择枚举,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我正在开发一种工具,以便在游戏中保持事物的有序性 这是我的班级: //The item public class Item { public int Id { get; set; } public string Name { get; set; } public decimal Value { get; set; } public ItemLabel Label { get; set; } public ItemType Type { get; set;

我正在开发一种工具,以便在游戏中保持事物的有序性

这是我的班级:

//The item
public class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Value { get; set; }
    public ItemLabel Label { get; set; }
    public ItemType Type { get; set; }
    public ItemTradeType TradeType { get; set; }
    public Trade Trade { get; set; }
}
标签/Type/TradeType/Trade
是枚举

视图:

@model EveMonitorV2.Models.Item
@{
ViewBag.Title=“AddItem”;
}
附加项
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
项目
@LabelFor(model=>model.Name)
@EditorFor(model=>model.Name)
@Html.ValidationMessageFor(model=>model.Name)
@LabelFor(model=>model.Value)
//这里应该做什么?
@EditorFor(model=>model.Value)
@Html.ValidationMessageFor(model=>model.Value)
@LabelFor(model=>model.Trade)
@Html.CheckBoxFor()
@Html.ValidationMessageFor(model=>model.Trade)

} @ActionLink(“返回列表”、“索引”)
枚举有一个完整的可能性列表,我想创建一个项目创建视图

我遇到的问题是:

我希望能够从枚举中选择更多选项。 其中类别是我的枚举

在asp.NETMVC4中这可能吗


(请注意:我还是一名学生,但这不是学校的项目)

创建视图\Shared\EditorTemplates\Options.cshtml

@using System.ComponentModel.DataAnnotations
@using System.Reflection
@model Enum
@{
    var name = ViewData.TemplateInfo.HtmlFieldPrefix;
    var type = Model.GetType();
}

@foreach (Enum e in Enum.GetValues(type))
{
    var display = type.GetField(e.ToString()).GetCustomAttribute<DisplayAttribute>();
    if (display != null && (display.GetAutoGenerateField() ?? true))
    {
    <label class="checkbox" title="@display.GetDescription()">
        <input type="checkbox" name="@name" value="@e.ToString()" checked="@Model.HasFlag(e)" />
        @display.Name
    </label>
    }
}
@使用System.ComponentModel.DataAnnotations
@使用系统反射
@模型枚举
@{
变量名称=ViewData.TemplateInfo.HtmlFieldPrefix;
var type=Model.GetType();
}
@foreach(Enum.GetValues(类型)中的枚举e)
{
var display=type.GetField(例如ToString()).GetCustomAttribute();
if(display!=null&(display.GetAutoGenerateField()??true))
{
@显示名称
}
}
您的枚举可以描述为下一个:

[Flags]
public enum MyOptions
{
    [Display(AutoGenerateField = false)]
    None = 0,
    [Display(Name = "Option 1 name")]
    Opt1 = 1 << 1,
    [Display(Name = "Option 2 name")]
    Opt2 = 1 << 2,
    [Display(Name = "Option 3 name")]
    Opt3 = 1 << 3,
}
[标志]
公共枚举选项
{
[显示(AutoGenerateField=false)]
无=0,
[显示(名称=“选项1名称”)]

Opt1=1您可以使用System.Enum类获取枚举的名称和值(例如)。循环这些名称和值,并为每个值创建一个Html.CheckBox。谢谢@Kevingesner,我会检查它
[Flags]
public enum MyOptions
{
    [Display(AutoGenerateField = false)]
    None = 0,
    [Display(Name = "Option 1 name")]
    Opt1 = 1 << 1,
    [Display(Name = "Option 2 name")]
    Opt2 = 1 << 2,
    [Display(Name = "Option 3 name")]
    Opt3 = 1 << 3,
}
    <div class="editor-field">
        @Html.LabelFor(m => m.Trade)
        @Html.EditorFor(m => m.Trade, "Options")
    </div>