加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 如何从@ Html.EditForModel()中排除一个字段,

发布时间:2020-12-16 03:41:16 所属栏目:asp.Net 来源:网络整理
导读:我正在阅读ASP.NET MVC及其所有有趣的用途,我刚刚发现了大约 DataTemplates. 我急于测试这个东西,我将一个更简单的模型转换为使用@ Html.DisplayForModel()和@ Html.EditForModel(),它就像一个幸运的魅力,它是:) 我立即发现的一件事是,我无法轻松定义一个字
我正在阅读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; }
}

这就是你所需要的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读