微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc-3 – 如何从@ Html.EditForModel()中排除一个字段,但是使用Html.DisplayForModel()显示它

我正在阅读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; }
}

这就是你所需要的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐