中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

MVC驗證(只驗證指定字(zi)段)

在我上一(yi)篇文章中,對(dui)實體驗證(zheng)的方式是如(ru)果所(suo)有(you)(you)字段(duan)不滿足條件將(jiang)會向集合中迭代(dai)返回(hui)一(yi)個結果,但(dan)有(you)(you)時(shi),我們不希(xi)望驗證(zheng)所(suo)有(you)(you)對(dui)象(xiang),可(ke)以(yi)只(zhi)是修改指定字段(duan),如(ru)用戶修改密碼(ma)(ma)功能,可(ke)以(yi)對(dui)實體驗證(zheng)只(zhi)考慮原密碼(ma)(ma),新密碼(ma)(ma)和確認密碼(ma)(ma)就可(ke)以(yi)了(le),而(er)如(ru)果驗證(zheng)所(suo)有(you)(you)字段(duan)反而(er)有(you)(you)點多此一(yi)舉了(le),所(suo)以(yi),我對(dui)實體類(lei)的驗證(zheng)部分進行了(le)一(yi)個改動

看代碼


       /// <summary>
        /// 如果驗證(zheng)的字(zi)段(duan)為NULL表示驗證(zheng)所有字(zi)段(duan)
     /// </summary>
        public string[] ValidFields { get; set; }
     public virtual bool IsValid { get { return this.GetRuleViolations().Count() == 0; } }
      public virtual IEnumerable<RuleViolation> GetRuleViolations()
        {
            PropertyInfo[] propertyInfo = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            if (ValidFields != null) propertyInfo = propertyInfo.Where(i => ValidFields.Contains(i.Name)).ToArray();
            foreach (var i in propertyInfo)
            {
                if (i.GetCustomAttributes(typeof(System.Data.Linq.Mapping.ColumnAttribute), false) != null
                    && i.GetCustomAttributes(typeof(System.Data.Linq.Mapping.ColumnAttribute), false).Count() > 0
                    && !((System.Data.Linq.Mapping.ColumnAttribute)i.GetCustomAttributes(typeof(System.Data.Linq.Mapping.ColumnAttribute), false)[0]).CanBeNull
                    && !((System.Data.Linq.Mapping.ColumnAttribute)i.GetCustomAttributes(typeof(System.Data.Linq.Mapping.ColumnAttribute), false)[0]).IsPrimaryKey)
                    if (i.GetValue(this, null) == null || string.IsNullOrEmpty(i.GetValue(this, null).ToString()))
                        yield return new RuleViolation("*", i.Name);
            }
        }

這樣(yang),如(ru)果(guo)我們希望對實(shi)體(ti)的指定字段進行驗(yan)證(zheng),為ValidFields實(shi)體(ti)進行賦值(zhi)就可以了,呵(he)呵(he),是(shi)不是(shi)很方便 !

posted @ 2012-04-15 23:53  張占嶺  閱讀(2972)  評論(7)    收藏  舉報