C# 如何在服务器端检查ModelState.IsValid之前只删除一个验证属性?
我有低于标准的课程。由多个视图共享的 现在,对于view1.cshtml,两个验证属性(即C# 如何在服务器端检查ModelState.IsValid之前只删除一个验证属性?,c#,asp.net-mvc,data-annotations,required,C#,Asp.net Mvc,Data Annotations,Required,我有低于标准的课程。由多个视图共享的 现在,对于view1.cshtml,两个验证属性(即regularpression,Required)都可以正常工作,因此我不需要为此做任何事情 问题是,当我提交第二个view2.cshtml时,我想删除必需的验证属性,而不是正则表达式 模型类具有以下属性 [RegularExpression(@"[A-Za-z]{5}\d{4}[A-Za-z]{1}", ErrorMessage = "Invalid")] [Required(ErrorMessage =
regularpression
,Required
)都可以正常工作,因此我不需要为此做任何事情
问题是,当我提交第二个view2.cshtml时,我想删除必需的
验证属性,而不是正则表达式
模型类具有以下属性
[RegularExpression(@"[A-Za-z]{5}\d{4}[A-Za-z]{1}", ErrorMessage = "Invalid")]
[Required(ErrorMessage = "The PAN no field is required")]
public string pan { get; set; }
我尝试在下面的代码中删除所需的验证,但它也删除了RegularExpression验证
ModelState.Remove("pan");
if (ModelState.IsValid)
{
}
试着这样做:
ModelState["pan"].Errors.Clear();
我相信CustomAttribute可以帮助您解决问题。@Skrface在这种情况下是否有CustomeAttribute的参考资料。它并没有直接解决您的问题,但它认为为每个视图提供一个单独的vm是最佳做法。这有助于防止像过密/过密攻击这样的事情,并使您试图解决的情况变成一个微不足道的问题。什么更清楚?两个viewmodels或一个viewmodel具有自定义写入数据属性,可以有条件地删除对其中一个vm属性的验证。实际上,我的vm由多个视图共享。对于这个单一属性验证,我必须为每个视图创建相同VM的多个副本。这是使用多视图来创建单个视图的唯一原因model@MannanBahelim把它们分开仍然是个好主意。如果共享此vm的所有视图都使用vm中的所有属性,那么请确保继续使用相同的vm(尽管我猜您的一些视图使用此vm中的属性子集),直到需要不同的属性为止。这听起来像是第一次需要不同的视图,并保证创建一个单独的视图模型。我不想从字段中删除错误。如果添加此语句,如何检查输入的值是否已通过正则表达式