好吧,我的问题是 fluidValidation 中的 modelvalidator 在我的项目中不起作用,并且无论验证状态如何,ModelState.IsValid 始终为 true,我提前使用 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();
}
登录视图模型
using FluentValidation.Attributes;
namespace ViewModel.Cuentas
{
[Validator(typeof(LoginViewModel))]
public class LoginViewModel
{
public string UserName { get; set; }
public string Password { get; set; }
}
}
登录视图模型验证器
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");
}
Your Validator
属性的类型似乎错误。你有:
[Validator(typeof(LoginViewModel))]
public class LoginViewModel
类型参数应该是您的验证器类 -LoginViewModelValidator
。所以它会是这样的:
[Validator(typeof(LoginViewModelValidator))]
public class LoginViewModel
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)