asp.net mvc 5模板用于收集属性

时间:2014-11-04 13:19:34

标签: c# asp.net asp.net-mvc templates asp.net-mvc-5.2

我想用模板对模型的一些控件进行分组(最好不要用C#硬编码)。如果布局发生变化,我可以编辑模板的html,而不是在每个视图中更改它。

这是我到目前为止所得到的:
视图\ EditorTemplates \ InputBlock.cshtml

<section class="pure-g">
    @foreach (KeyValuePair<string, object> item in ViewData)
    {
        if (ViewData.ModelMetadata.Properties.Any(x => x.PropertyName == item.Key))
        {
            <div class="pure-u-1-2">
                @Html.Label(item.Key)
                @Html.Editor(item.Key)
                @Html.ValidationMessage(item.Key)
            </div>
        }
    }
</section>

我正在使用这样的模板:

 @Html.EditorFor(model => model, "InputBlock", new { Model.FirstName, Model.LastName, Model.LastLogin, Model.Id })

这样可行,它会使用正确的类型呈现所有控件。

问题是它忽略了添加到模型的任何属性,如 [Required] [DisplayName] ,因此标签显示属性名称而不是设置为的值DisplayName,即使ModelMetadata中的属性设置了正确的DisplayName。

服务器端验证确实有效。定义 [Required] [StringLength] 时,不会添加不显眼的验证属性,只设置特定数据类型的默认属性(如datetime或int)< / p>

如何在属性仍然有效的模板中轻松地对多个控件进行分组,最好是可以更改而无需重新编译项目?

0 个答案:

没有答案