C# MVC中的自定义验证属性

C# MVC中的自定义验证属性,c#,asp.net-mvc,validation,data-annotations,C#,Asp.net Mvc,Validation,Data Annotations,我在asp.net MVC中创建了一个自定义Validation属性,但它不起作用。验证类的构造函数调用但IsValid函数未调用“提交”按钮。我的代码是: public class TestAttribute :ValidationAttribute { private new readonly string ErrorMessage; public TestAttribute(string ErrorMessage) {

我在asp.net MVC中创建了一个自定义Validation属性,但它不起作用。验证类的构造函数调用但
IsValid
函数未调用“提交”按钮。我的代码是:

public class TestAttribute :ValidationAttribute
    {
        private new readonly string ErrorMessage;
        public TestAttribute(string ErrorMessage)
        {
            this.ErrorMessage = ErrorMessage;
        }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
           if(value!=null)
            {
                return ValidationResult.Success;
            }
            return new ValidationResult(this.ErrorMessage);
        }
    }  
用法:

 [Test("Error")]
 public string User_Pwd { get; set; } 



<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
         <div class="form-group">
             <label class="control-label">Password</label>
              @Html.TextBoxFor(m => m.User_Pwd, new { @class = "form-control", @placeholder = "User Password", @maxlength = "50", id = "txt_Pwd" })
              @Html.ValidationMessageFor(m => m.User_Pwd)
         </div>
</div>
[测试(“错误”)]
公共字符串用户_Pwd{get;set;}
密码
@Html.TextBoxFor(m=>m.User\u Pwd,新的{@class=“form control”,@placeholder=“User Password”,@maxlength=“50”,id=“txt\u Pwd”})
@Html.ValidationMessageFor(m=>m.User_Pwd)

这是一个示例代码。这里是测试类的构造函数调用,但函数未调用。

我不明白,在调用“提交”按钮时,您想同时调用构造函数和IsValid吗?您需要提供更多的代码。您显示的代码工作正常。是什么让你认为没有调用
IsValid()
方法?你是否希望看到客户端验证错误(提交将被取消)?@StephenMuecke我在查看时没有收到错误消息,当我调试代码时,我观察到构造函数正在调用,但IsValid函数没有调用。是,我想要客户端验证错误。