Asp.net mvc ASP.NET MVC不引人注目的客户端验证不起作用

Asp.net mvc ASP.NET MVC不引人注目的客户端验证不起作用,asp.net-mvc,unobtrusive-validation,fluentvalidation,Asp.net Mvc,Unobtrusive Validation,Fluentvalidation,在我的ASP.NETMVC4应用程序中,我尝试使用不引人注目的客户端验证和流畅的验证 <script src="/Scripts/jquery.validate.min.js" type="text/javascript"> </script> <script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"> </script> 有什么想法吗?谢谢。

在我的ASP.NETMVC4应用程序中,我尝试使用不引人注目的客户端验证和流畅的验证

<script src="/Scripts/jquery.validate.min.js" type="text/javascript">
</script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript">
</script>

有什么想法吗?谢谢。

您是否添加了MVC的配置

protected void Application_Start() {
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);

    // this line is required for fluent validation
    FluentValidationModelValidatorProvider.Configure();
}
您还需要配置每个视图模型/验证器:

[Validator(typeof(PersonValidator))]
public class Person {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public int Age { get; set; }
}

public class PersonValidator : AbstractValidator<Person> {
    public PersonValidator() {
        RuleFor(x => x.Id).NotNull();
        RuleFor(x => x.Name).Length(0, 10);
        RuleFor(x => x.Email).EmailAddress();
        RuleFor(x => x.Age).InclusiveBetween(18, 60);
    }
}
[Validator(typeof(PersonValidator))]
公共阶层人士{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串电子邮件{get;set;}
公共整数{get;set;}
}
公共类PersonValidator:AbstractValidator{
公共PersonValidator(){
RuleFor(x=>x.Id).NotNull();
RuleFor(x=>x.Name).Length(0,10);
RuleFor(x=>x.Email).EmailAddress();
(x=>x.Age)的规则。包括两人(18,60);
}
}
如果这没有帮助,您可以发布一个验证程序工作不正常的示例吗?并非所有的验证都可以在客户端完成。例如,以下验证器仅在服务器端工作:

// when validator rules are always server side
public class ServerSideValidator : AbstractValidator<Person> {
    public ServerSideValidator() {
        When(x => x.Name == "Foo", () => {
            RuleFor(x => x.Email).EmailAddress();
        });
    }
}
//当验证程序规则始终在服务器端时
公共类ServerSideValidator:AbstractValidator{
公共ServerSideValidator(){
当(x=>x.Name==“Foo”,()=>{
规则for(x=>x.Email.Email).EmailAddress();
});
}
}

愚蠢的问题,但是您是否确保JQuery主js文件和您显示的两个文件已正确解析?JQuery主文件已明确解析,我有很多JQuery函数工作正常。老实说,我不知道他们两人是否下定决心了。这些文件存在,而且它们似乎可以在chrome开发者工具的脚本中使用。另一个愚蠢的问题是,你是否从要验证的模型中生成了输入?我们也可以获取你的开始表单标签的代码吗?@Alexander更新了my question.thx以获得答案,但我拥有所有这些文件。这是我的验证代码:RuleFor(product=>product.Manufacturer).NotNull();什么是制造商?那是字符串还是类?
protected void Application_Start() {
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);

    // this line is required for fluent validation
    FluentValidationModelValidatorProvider.Configure();
}
[Validator(typeof(PersonValidator))]
public class Person {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public int Age { get; set; }
}

public class PersonValidator : AbstractValidator<Person> {
    public PersonValidator() {
        RuleFor(x => x.Id).NotNull();
        RuleFor(x => x.Name).Length(0, 10);
        RuleFor(x => x.Email).EmailAddress();
        RuleFor(x => x.Age).InclusiveBetween(18, 60);
    }
}
// when validator rules are always server side
public class ServerSideValidator : AbstractValidator<Person> {
    public ServerSideValidator() {
        When(x => x.Name == "Foo", () => {
            RuleFor(x => x.Email).EmailAddress();
        });
    }
}