【问题标题】:Failing to get unobtrusive client validation未能获得不显眼的客户端验证
【发布时间】:2012-07-11 05:35:02
【问题描述】:

我发现我想要验证的属性必须在 C# 中具有 [Required] 属性 (我对吗?) 如果是这样 - 我的模型是 linq 生成的类 - 如何添加这个属性?

【问题讨论】:

  • 看看像 Automapper 这样的工具。您可以自动将域模型映射到视图模型,然后您可以对其执行验证。您通常不想向用户呈现域模型。 github.com/AutoMapper/AutoMapper

标签: asp.net-mvc-3 linq razor unobtrusive


【解决方案1】:

您可以通过以下几种方式做到这一点:

  • 如果可能,使该字段在数据库中不可为空。这将使数据层需要该字段。

  • 创建一个向模型类添加属性的分部类。使用此属性而不是数据库生成的属性。

例如:

public partial class YourEntity
{
   [Required]
   public string YourNewProperty
   {
      get { return this.TheRealProperty; }
      set { this.TheRealProperty = value; }
   }
}

希望这会有所帮助

【讨论】:

    【解决方案2】:

    好吧,您总是可以创建一个新类,作为数据访问层的一部分,具有相同的属性,只需将 [required] 放在您想要的位置。

    【讨论】:

      【解决方案3】:

      我相信您的 LINQ 类是部分的。使用 MVC,您可以使用“MetatDataTypeAttribute

      像这样

      [MetadataType(typeof(UserMetadataSource))]
      public partial class User {
      
      }
      
      class UserMetadataSource {
          [HiddenInput(DisplayValue = false)]
          public int UserId { get; set; }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-19
        • 1970-01-01
        • 1970-01-01
        • 2012-04-15
        • 1970-01-01
        • 2011-05-10
        相关资源
        最近更新 更多