C# 如何在mvc中禁用某些列或属性验证?

C# 如何在mvc中禁用某些列或属性验证?,c#,asp.net-mvc,validation,C#,Asp.net Mvc,Validation,我想要创建两个视图,一个视图所有属性验证,但第二个视图我想要一些属性验证。 如何禁用其他视图的验证? public partial class Car_Property { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public Car_Property()

我想要创建两个视图,一个视图所有属性验证,但第二个视图我想要一些属性验证。 如何禁用其他视图的验证?

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; }
    }
公共部分类汽车物业
{
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2214:DoNotCallOverridableMethodsInConstructors”)]
公共汽车物业()
{
this.Cars=newhashset();
}
公共长ID{get;set;}
[必需]
公共可空模型{get;set;}
[必需]
公共可空年份{get;set;}
[必需]
公共字符串备注{get;set;}
公共虚拟模型Model1{get;set;}
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2227:CollectionPropertiesShouldBreadOnly”)]
公共虚拟ICollection Cars{get;set;}
}
第一个视图我需要所有验证,但第二个视图只需要年份验证 其他人则不予理睬


您可以使用IsValidField方法仅检查年份字段,如下所示:

if (ModelState.IsValidField("Years"))
{
//do something...
}
if (ModelState.IsValidField("Years") && ModelState.IsValidField("Remark"))
{
//do something...
}
如果需要验证更多字段,只需使用and运算符,如下所示:

if (ModelState.IsValidField("Years"))
{
//do something...
}
if (ModelState.IsValidField("Years") && ModelState.IsValidField("Remark"))
{
//do something...
}
要验证属性列表并忽略其他属性,可以在操作方法中执行以下操作:

        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
        }
List validationProperties=新列表{“年”};
bool isValid=true;
foreach(模型中的PropertyInfo PropertyInfo.GetType().GetProperties())
{
if(validationProperties.Contains(propertyInfo.Name))
isValid=ModelState.IsValidField(propertyInfo.Name)&&isValid;
}
如果(有效)
{
//在这里做事
}

您可以根据视图而不是模型使用jquery应用验证。@Hp\u issei您是说客户端验证吗?是的。客户端验证。我需要服务站点验证。然后您可以创建两个具有相同属性但不同验证属性的模型,并根据视图使用