在Razor视图中隐藏的HiddenFor字段中枚举值代替键.Net MVC 5)
本文关键字:Net MVC 枚举 视图 Razor 隐藏 字段 HiddenFor | 更新日期: 2023-09-27 18:13:03
我尝试使用这个解决方案:
MVC3 HiddenFor with Enum。输入's的值是enum键不是值?
然而,它在MVC5 Razor视图中不起作用。我得到这个错误:
类型为'System '的异常。InvalidOperationException'在System.Web.Mvc.dll中发生,但未在用户代码中处理
附加信息:模板只能与字段访问、属性访问、单维数组索引或单参数自定义索引器表达式一起使用。
如何在隐藏字段中获得枚举值而不是枚举键?
Enum类型:public enum LineType : int
{
Account = 0,
Inventory = 1,
Service = 2
}
在Razor视图中我有:
@Html.HiddenFor(m => (int)m.LineTypeID)
LineTypeID的类型为LineType
你可以这样做
@Html.HiddenFor(m => m.LineTypeID, new {@Value = (int)Model.LineTypeID})
覆盖键值
这里再详细说明一下答案:
@Html.HiddenFor(m => (int)m.LineTypeID)
这行不通。不能在模板上强制转换。当您强制转换时,它会创建一个新变量,这将不起作用。
删除强制转换为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
}
你现在应该