在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

在Razor视图中隐藏的HiddenFor字段中枚举值代替键.Net MVC 5)

你可以这样做

@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
}

你现在应该