【发布时间】:2011-07-05 10:08:00
【问题描述】:
我的观点如下:
@Html.HiddenFor(x => x.MeasurementUnitType)
MeasurementUnitType 是一个枚举,如下所示:
public enum MeasurementUnitType
{
Metric, Imperial
}
无论模型上的枚举发生了什么,隐藏字段始终设置为度量。
我确实尝试过为它创建一个编辑器模板:
@using Ns.Domain.Models.Enums
@model Ns.Domain.Models.Enums.MeasurementUnitType
@{
switch (Model)
{
case MeasurementUnitType.Metric:
<text>
@Html.Hidden("Metric", ViewData.TemplateInfo.FormattedModelValue)
</text>
break;
case MeasurementUnitType.Imperial:
<text>
@Html.Hidden("Imperial", ViewData.TemplateInfo.FormattedModelValue)
</text>
break;
default:
throw new ArgumentOutOfRangeException();
}
}
但这会将隐藏字段输出为
<input id="NewTable_MeasurementUnitType_Metric" name="NewTable.MeasurementUnitType.Metric" type="hidden" value="Metric" />
或
<input id="NewTable_MeasurementUnitType_Imperial" name="NewTable.MeasurementUnitType.Metric" type="hidden" value="Imperial" />
分别
这不起作用,因为 Id 具有枚举的实际值以及 Id 中枚举的名称...
有人有什么想法吗?
【问题讨论】:
-
对于您的第二个示例,您不能将与第一个参数相同的值传递给
Html.Hidden吗?从而保持隐藏的 ID 相同 -
是的 - 现在就这样做 - 虽然不会解决问题吗?
-
不……没用……头疼……
-
是的,应该可以 - 尽管您可能想使用
ViewData.ModelMetadata.PropertyName -
那行得通 :) 将其放入答案中,我会将其标记为正确,以便将来我寻找相同的答案
标签: asp.net asp.net-mvc asp.net-mvc-3 razor