c# - FluentValidation ModelState.IsValid 始终为真

标签 c# asp.net-mvc fluentvalidation

好的,我的问题是来自 fluentValidation 的模型验证器在我的项目中不起作用,无论验证状态如何,ModelState.IsValid 始终为真,我使用的是 asp.net mvc 4、.net 4.5,提前谢谢。

全局.asax

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

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterAuth();
        FluentValidationModelValidatorProvider.Configure();
    }

登录 View 模型

using FluentValidation.Attributes;

namespace ViewModel.Cuentas
{

 [Validator(typeof(LoginViewModel))]
 public class LoginViewModel
 {
    public string UserName { get; set; }
    public string Password { get; set; }
 }
}

登录 View 模型验证器

using FluentValidation;
using FluentValidation.Results;
namespace ViewModel.Cuentas.Validadores
{
    public class LoginViewModelValidator : AbstractValidator<LoginViewModel>
    {
        public LoginViewModelValidator()
        {
        RuleFor(x => x.UserName).NotEmpty().WithMessage("El Campo Usuario es Necesario");
        RuleFor(x => x.Password).NotEmpty().WithMessage("El Campo Usuario es Necesario");
        }
   }
}

和我的账户控制者

   [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginViewModel viewModel)
    {
        if (!ModelState.IsValid)
        {
            return View();
        }
        FormsAuthentication.SetAuthCookie(viewModel.UserName, false);
        if (!String.IsNullOrEmpty(returnUrl) && returnUrl != "/")
        {
            return Redirect(returnUrl);
        }
        return RedirectToAction("Enviar", "Cartas");
    }

最佳答案

您的 Validator 属性似乎有错误的类型。你有:

[Validator(typeof(LoginViewModel))]
public class LoginViewModel

类型参数应该是您的验证器类 - LoginViewModelValidator。所以它会是这样的:

[Validator(typeof(LoginViewModelValidator))]
public class LoginViewModel

关于c# - FluentValidation ModelState.IsValid 始终为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17367799/

相关文章:

ServiceStack Fluent 验证 - 消息问题

c# - 如何使用 lambda 表达式进行验证以验证某个小时是否为某个 "type"(必须为 hh :00 or hh:30)

asp.net-web-api - Web API 中的每个请求 DependencyResolver

c# - 我们可以使用 OrderBy(Random) 吗?

c# - 将 nunit 与 Jenkins 一起使用时获取 C# 应用程序的执行路径

c# - obj 目录中的 *.dll.licenses 文件不是使用 TeamCity 中的 msbuild 创建的

c# - 无法确定导航属性 ASP.NET core 2.0 Entity Framework 表示的关系

C#解析XML文件

c# - Web Api 中的 Unity Container PerRequestLifetimeManager

asp.net - 在 asp.net mvc 中从母版页 View 中查找 Controller 名称的更好方法