asp.net-mvc - 排除一些子成员获得验证

标签 asp.net-mvc validation

为了注册新成员,我有一个名为 UserRegisterModel 的 ViewModel。此模型从用户那里获取两种地址,必需 HomeAddress可选 WorkAddress。为了获取地址,我使用了一个名为 ContactEntryModel 的复杂类型。我用 [Required] 属性装饰了我的 ContactEntryModel 成员,这导致家庭和工作地址都得到自动验证。

我正在寻找一种将 WorkAddress 标记为IgnoredExcluded 的解决方案,并告诉验证引擎停止验证 WorkAddress 子属性,即使它们装饰有验证属性。

public class UserRegisterModel
    {
        [StringLength(50), Required]
        public string FirstName { get; set; }
        [StringLength(50), Required]
        public string LastName { get; set; }
        [StringLength(10), Required]
        public string IdCardNo { get; set; }
        [StringLength(100), Email]
        public string Email { get; set; }

        public ContactEntryModel HomeContact { get; set; }  //Required

        public ContactEntryModel WorkContact { get; set; }  //Optional
     }


   public class ContactEntryModel
    {
        [MaxLength(4), Required]
        public string TelPrefix { get; set; }
        [MaxLength(10), Required]
        public string Tel { get; set; }
        [MaxLength(50), Required]
        public string Province { get; set; }
        [MaxLength(50), Required]
        public string City { get; set; }
        [MaxLength(300), Required]
        public string AddressLine { get; set; }
        [MaxLength(20)]
        public string PostalCode { get; set; }
    }

最佳答案

执行此操作的最佳方法是创建一个根据您的情况适当装饰的自定义 View 模型。

另一个版本是告诉您的模型 Binder 忽略这些字段(这也会跳过验证)。您可以使用 Bind 属性执行此操作:

[Bind(Exclude="WorkAddress")]
public ActionResult DoSomething(UserRegisterModel model)
{
    //controller code here
}

关于asp.net-mvc - 排除一些子成员获得验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10894329/

相关文章:

ruby-on-rails - Rails 验证 :if with checkboxes

css - 如何将 'required field' 星号添加到 Angular react 形式输入

css - 为什么验证器在样式表媒体屏幕句柄中说错误

asp.net - 不将我的 ASP.NET 2.0 站点移动到 ASP.NET 3.5,我错过了什么?

javascript - 使用单键向上函数调用定位多个选项卡

node.js - meteor 自动形成简单模式 : how to customize validation message?

java - 为什么我的内部对象的自定义 validator 不用于验证?

sql - Orchard : one property value does not save in SQL Server 2012

asp.net - HTML5/CSS3 水平和垂直连续居中 2 个元素

c# - 我们如何使用 C# 或 Java Script/Jquery 更改地址栏的属性