我正在阅读ASP.NET MVC及其所有有趣的用途,我刚刚发现了大约
DataTemplates.
我急于测试这个东西,我将一个更简单的模型转换为使用@ Html.displayForModel()和@ Html.EditForModel(),它就像一个幸运的魅力,它是:)
解决方法
您可以使用IMetadataAware接口创建属性,该属性将在元数据中设置ShowForEdit和ShowFordislay:
[AttributeUsage(AttributeTargets.Property,AllowMultiple = false,Inherited = true)] public class TemplatesVisibilityAttribute : Attribute,IMetadataAware { public bool ShowFordisplay { get; set; } public bool ShowForEdit { get; set; } public TemplatesVisibilityAttribut() { this.ShowFordisplay = true; this.ShowForEdit = true; } public void OnMetadataCreated(ModelMetadata Metadata) { if (Metadata == null) { throw new ArgumentNullException("Metadata"); } Metadata.ShowFordisplay = this.ShowFordisplay; Metadata.ShowForEdit = this.ShowForEdit; } }
然后您可以将它附加到您的财产,如下所示:
public class Templateviewmodel { [TemplatesVisibility(ShowForEdit = false)] public string ShowFordisplayProperty { get; set; } public string ShowAlwaysProperty { get; set; } }
这就是你所需要的.