Как отключить проверку некоторых столбцов или свойств в mvc? - PullRequest
0 голосов
/ 08 января 2019

Я хочу создать два вида, один вид для проверки всех свойств, а второй - для некоторой проверки свойств. как отключить проверку для другого представления?

public partial class Car_Property
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Car_Property()
        {
            this.Cars = new HashSet<Car>();
        }

        public long ID { get; set; }
        [Required]
        public Nullable<long> Model { get; set; }
        [Required]
        public Nullable<int> Years { get; set; }
        [Required]
        public string Remark { get; set; }

        public virtual Model Model1 { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Car> Cars { get; set; }
    }

первый просмотр Я хочу все проверки, но только второй просмотр Годы проверки другие игнорируют.

1 Ответ

0 голосов
/ 08 января 2019

Вы можете использовать метод IsValidField только для проверки поля Годы, как показано ниже:

if (ModelState.IsValidField("Years"))
{
//do something...
}

если вам нужно проверить больше полей, просто используйте оператор и, как показано ниже:

if (ModelState.IsValidField("Years") && ModelState.IsValidField("Remark"))
{
//do something...
}

чтобы проверить список свойств и игнорировать другие, вы можете сделать что-то подобное в вашем методе Action:

        List<string> validationProperties = new List<string> { "Years"};
        bool isValid = true;
        foreach (PropertyInfo propertyInfo in model.GetType().GetProperties())
        {
            if (validationProperties .Contains(propertyInfo.Name))
                isValid = ModelState.IsValidField(propertyInfo.Name) && isValid;

        }
        if (isValid)
        {
            // do stuff here
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...