Razor视图中隐藏的HiddenFor字段中的枚举值而不是键(Asp.Net MVC 5)

时间:2015-09-17 06:22:54

标签: c# asp.net-mvc razor enums

我尝试使用此解决方案:

MVC3 HiddenFor with Enum. Input's value is enum key not value?

然而,它在MVC5 Razor视图中不起作用。我收到这个错误:

System.Web.Mvc.dll中发生了'System.InvalidOperationException'类型的异常,但未在用户代码中处理

其他信息:模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。

如何在隐藏字段中获取枚举值而不是枚举键?

枚举类型:

public enum LineType : int
{
    Account = 0,
    Inventory = 1,
    Service = 2
}

在Razor视图中,我有:

 @Html.HiddenFor(m => (int)m.LineTypeID)

LineTypeID的类型为LineType。

2 个答案:

答案 0 :(得分:6)

你可以这样做

@Html.HiddenFor(m => m.LineTypeID, new {@Value = (int)Model.LineTypeID})

这会覆盖键值

答案 1 :(得分:0)

这里只是为了进一步详细说明答案:

@Html.HiddenFor(m => (int)m.LineTypeID)

这不起作用。你不能在模板上施放。当你施放它时会创建一个新变量,但这不起作用。

将cast转换为int并按照描述添加@value字段。

@Html.HiddenFor(m => m.LineTypeID, new {@Value = (int)m.LineTypeID, id = "LineTypeID"})

我想添加Id字段,以便以后可以轻松访问JavaScript中的值:

var lineTypeIDValue = parseInt($("#LineTypeID").val());

同样在C#中,您不需要为枚举添加类型。

public enum LineType
{
    Account = 0,
    Inventory = 1,
    Service = 2
}

你现在应该