Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在服务器端检查ModelState.IsValid之前只删除一个验证属性?_C#_Asp.net Mvc_Data Annotations_Required - Fatal编程技术网

C# 如何在服务器端检查ModelState.IsValid之前只删除一个验证属性?

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 =

我有低于标准的课程。由多个视图共享的

现在,对于view1.cshtml,两个验证属性(即
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中的属性子集),直到需要不同的属性为止。这听起来像是第一次需要不同的视图,并保证创建一个单独的视图模型。我不想从字段中删除错误。如果添加此语句,如何检查输入的值是否已通过正则表达式