是否可以从 ModelMetaData.Properties 动态创建输入字段?



我正在迭代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的属性名称

相关内容

  • 没有找到相关文章

最新更新