我正在迭代ViewData.ModelMetadata.Properties
,为这些属性呈现一些输入:
@foreach (var property in ViewData.ModelMetadata.Properties
.Where(p => (p.AdditionalValues.Count > 0) && ((bool)p.AdditionalValues["tags"])))
{
// Generate form here
}
我能够正确显示LabelFor
@Html.LabelFor(model => Model,
property.DisplayName,
htmlAttributes: new { @class = "control-label col-md-2" })
但我似乎无法让编辑器工作。
我试过了
@Html.HiddenFor(model => model.GetType().GetProperties().First(t=>t.Name == property.PropertyName))
但是我看到此错误:
模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。
我也试过
@Html.HiddenFor(model => property)
但随后该值以null
的形式传递给控制器
是否可以执行此操作,还是需要手动对每个输入进行编码?
我能够通过以下方式解决此问题:
<input class="form-control" id="@($"{property.PropertyName}Field")"
name="@property.PropertyName" type="hidden" value="" />
现在,该值将拉到控制器。
我想它所需要的只是name
属性以匹配ViewModel
的属性名称