我在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
传递给控制器
可以这样做,还是需要手动编写每个输入?
答案 0 :(得分:0)
我能够解决这个问题:
<input class="form-control" id="@($"{property.PropertyName}Field")"
name="@property.PropertyName" type="hidden" value="" />
现在价值已经转移到控制器。
我猜它需要的是name
属性以匹配ViewModel
的属性名称