我正在阅读 ASP.NET MVC 及其所有有趣的用途,我刚刚发现 DataTemplates .
为了急于测试这个东西,我将一个更简单的模型转换为使用 @Html.DisplayForModel()
和 @Html.EditForModel()
和它就像一个幸运符一样:)
我立即发现的一件事是,我无法轻松定义一个字段以显示在显示 View 上,但根本无法进行编辑...
最佳答案
您可以使用 IMetadataAware 接口(interface)的创建属性来设置元数据中的 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; }
}
这就是您所需要的。
关于asp.net-mvc-3 - 如何从 @Html.EditForModel() 中排除字段,但使用 Html.DisplayForModel() 显示该字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583464/