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>