我认为我有以下内容:
@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中枚举的名称...
有人有任何想法吗?
答案 0 :(得分:2)
尝试这样做:
@Html.Hidden(ViewData.ModelMetadata.PropertyName,
ViewData.TemplateInfo.FormattedModelValue)
然后你也可以在没有开关声明的情况下逃脱。
你可能也会明显违反明显的MVC错误(不是),在另一个SO上提到whereby MVC will use ValueProvider-provided values from a POST request if you re-render the view。
答案 1 :(得分:0)