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

asp.net-mvc-3 – 模型验证/ ASP.NET MVC 3 – 条件必需属性

发布时间:2020-12-15 18:32:14 所属栏目:asp.Net 来源:网络整理
导读:我的ASP.NET MVC 3应用程序遇到麻烦。我有两个属性在我的模型,我只想要其中一个需要在我看来,基于任何一个是空的。所以例如,如果我输入一个电话号码,那么不再需要电子邮件,反之亦然,但如果我同时留下两个空格,那么需要1个,下面是我的模型: [Display
我的ASP.NET MVC 3应用程序遇到麻烦。我有两个属性在我的模型,我只想要其中一个需要在我看来,基于任何一个是空的。所以例如,如果我输入一个电话号码,那么不再需要电子邮件,反之亦然,但如果我同时留下两个空格,那么需要1个,下面是我的模型:
[Display(Name = "Contact Phone Number:")]
[MaxLength(150)]
public string ContactPhoneNumber { get; set; }

[Display(Name = "Contact Email Address:")]
[MaxLength(100)]
public string ContactEmailAddress { get; set; }

我需要创建一个自定义属性来验证我的模型,如果是,我该如何实现?

解决方法

您可以在类上实现IValidatableObject,并提供实现自定义逻辑的Validate()方法。如果您希望确保提供该逻辑,则将其与客户端上的自定义验证逻辑相结合。我发现这比实现一个属性更容易。
public class ContactModel : IValidatableObject
{
   ...

   public IEnumerable<ValidationResult> Validate( ValidationContext context )
   {
        if (string.IsNullOrWhitespace( ContactPhoneNumber ) 
            && string.IsNullOrWhitespace( ContactEmailAddress ))
        {
             yield return new ValidationResult( "Contact Phone Number or Email Address must be supplied.",new [] { "ContactPhoneNumber","ContactEmailAddress" } );
        }
   }
}

要使客户端的所有工作都可以,您需要将以下脚本添加到您的视图中:

<script type="text/javascript">
$(function() {
    $('form').validate(); 
    $('form').rules('add',{ 
        "ContactPhoneNumber": { 
            depends: function(el) { return !$('#ContactEmailAddress').val(); } 
        } 
    });
});
</script>

(编辑:李大同)

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

    推荐文章
      热点阅读