带有枚举的MVC3 HiddeFor.输入';s的值是枚举键而不是值

本文关键字:枚举 MVC3 HiddeFor 输入 | 更新日期: 2023-09-27 18:22:06

我有一个枚举:

public enum TaskType
{
    None = 100,
    Install = 101,
    Decommission = 102,
    Modify = 103,
    Rename = 104,
    Move = 105,
    Incident = 106,
    Other = 107
};

我想通过将其保存为我的模型的属性来表示它在我看来的当前价值:

public class ProvisioningListModel
{
    public TaskType TaskType { get; set; }
    public ProvisioningListModel(Task task)
    {
        TaskType = task.TaskType;
    }
}

我的观点有相应的:

<%=Html.HiddenFor(model => model.TaskType)%>

当生成适当的隐藏输入元素时,它的值是"Install"而不是"101"。这对我来说似乎很奇怪,因为枚举通常是由它们的值而不是键来处理的。

<input id="TaskType" name="TaskType" type="hidden" value="Install">

这是MVC中的常见问题吗?有简单的解决办法吗?

带有枚举的MVC3 HiddeFor.输入';s的值是枚举键而不是值

首先使您的枚举类型从int 继承

public enum TaskType :int
{
  ...

然后简单地使用

<%=Html.HiddenFor(model => (int)model.TaskType)%>