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# 自定义数据注释、客户端验证、视图模型和模型状态_C#_Asp.net Mvc_Asp.net Mvc 3_Data Annotations_Modelstate - Fatal编程技术网

C# 自定义数据注释、客户端验证、视图模型和模型状态

C# 自定义数据注释、客户端验证、视图模型和模型状态,c#,asp.net-mvc,asp.net-mvc-3,data-annotations,modelstate,C#,Asp.net Mvc,Asp.net Mvc 3,Data Annotations,Modelstate,这是本帖一个老问题的延伸: 这让我对如何使用jquery-unubtrusive-ajax.js进行客户端自定义验证有了很多了解 以下是答案代码: namespace Checked.Entitites { public class BooleanRequiredAttribute : ValidationAttribute, IClientValidatable {

这是本帖一个老问题的延伸:

这让我对如何使用jquery-unubtrusive-ajax.js进行客户端自定义验证有了很多了解

以下是答案代码:

            namespace Checked.Entitites
            {
                public class BooleanRequiredAttribute : ValidationAttribute, IClientValidatable
                {
                    public override bool IsValid(object value)
                    {
                        return value != null && (bool)value == true;
                    }

                    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
                    {
                        //return new ModelClientValidationRule[] { new ModelClientValidationRule() { ValidationType = "booleanrequired", ErrorMessage = this.ErrorMessage } };
                        yield return new ModelClientValidationRule() 
                        { 
                            ValidationType = "booleanrequired", 
                            ErrorMessage = this.ErrorMessageString 
                        };
                    }
                }
            }
在视图中使用textboxfor时,错误消息将填充在html验证摘要中

        @Html.CheckBoxFor(model => model.Terms, new { @class = "legalbox",  @placeholder = "Terms" })
我还必须将这一行添加到jquery.unubtrusive-ajax.js中

        $.validator.unobtrusive.adapters.addBool("BooleanRequired", "required"); 
当我在控制器中引用此模型并检查modelstate时,就会出现此修复程序的问题。无论此自定义验证字段的值是多少,modelstate始终为false。看起来覆盖isvalid在客户端验证中有效,但在服务器端无效。我需要它来处理这两个问题,并且一直在努力寻找一个解决方案,而不是放弃数据注释而使用其他东西

我在控制器中使用的特定行永远不会与此字段一起通过,如下所示:

            if (ModelState.IsValid) {
                 //Logic here
            }
使用标准数据注释的模型的其余部分正确地进行了验证,我只是无法让这个自定义注释以与内置属性相同的方式工作。正确的解决方案可能会使我不必将这一行添加到不引人注目的ajax文件中

任何帮助都将不胜感激

谢谢

            if (ModelState.IsValid) {
                 //Logic here
            }