Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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# 了解属性具有多个验证属性的模型中的有效性_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Custom Attributes - Fatal编程技术网

C# 了解属性具有多个验证属性的模型中的有效性

C# 了解属性具有多个验证属性的模型中的有效性,c#,asp.net,asp.net-mvc,asp.net-mvc-3,custom-attributes,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Custom Attributes,我正在开发一个MVC应用程序,我编写的一些模型代码有点像这样展开: public class SomeModel { public int? CodeA { get; set; } public int? CodeB { get; set; } [RequiredIf("CodeA", 3, ErrorMessage = "(required for [Something]!)")] [RequiredIf("CodeB", 99, ErrorMessage =

我正在开发一个MVC应用程序,我编写的一些模型代码有点像这样展开:

public class SomeModel
{
    public int? CodeA { get; set; }
    public int? CodeB { get; set; }

    [RequiredIf("CodeA", 3, ErrorMessage = "(required for [Something]!)")]
    [RequiredIf("CodeB", 99, ErrorMessage = "(required for [Other]!)")]
    public string Foo { get; set; }

    // SNIP: Unimportant details
}
注意:找到了我正在使用的
RequiredIf()
实现

我用两个RequiredIf()属性修饰了属性Foo,用户可以在某些情况下编辑该属性。有两种不同的情况需要填写。在所有其他情况下,前端将解析用户的输入,并在“幕后”为他们填充输入

问题:如果只有一种情况(例如CodeA=3,CodeB=4)得到满足,并且用户未能输入任何内容,从而导致负面验证,那么模型是否仍会被标记为无效,并为其记录错误消息?或者,由于满足代码B条件,如果代码a处于需要(且未输入)的状态,是否会覆盖执行的验证


问的另一种方式是:验证是附加的,还是一次只对一个验证的结果有一个隐含的限制?

验证是否定的。要通过验证,所有验证器必须确认该字段有效。因此,对于您的
Foo
,如果
CodeA
验证程序通过,而
CodeB
验证程序失败,则验证将失败。Modelstate将包含该字段的单个错误。如果两者都失败,modelstate将包含该字段的两个错误