gpt4 book ai didi

asp.net-mvc - Asp.Net MVC - FluentValidation

转载 作者:行者123 更新时间:2023-12-01 09:08:27 26 4
gpt4 key购买 nike

在 Asp.Net MVC 中有没有办法使用某种流畅的验证?

我的意思是,不是像那样验证我的 poco:

public class User {

[Required]
public int Id { get; set; }

有类似的东西(在外部类中):

User.Validate("Required", "Id");

这在 Asp.Net MVC 2(或 3)中是否可行?

我知道 FluentValidation库存在,但我想知道 Asp.Net MVC 的核心是否允许这样做。

我不喜欢那样污染我的 POCO。另外,如果我需要验证假设 BeginDate 在 EndDate 之前会发生什么?有了属性,你就不能这样做了。

最佳答案

FluentValidation集成得很好with ASP.NET MVC .它带有一个模型绑定(bind)器,允许自动应用验证规则。

例如:

[Validator(typeof(MyViewModelValidator))]
public class MyViewModel
{
public int? Id { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}

public class MyViewModelValidator : AbstractValidator<MyViewModel>
{
public MyViewModelValidator()
{
RuleFor(x => x.Id)
.NotNull();
RuleFor(x => x.EndDate)
.GreaterThan(x => x.StartDate);
}
}

然后是你的 Controller Action :

[HttpPost]
public ActionResult Index(MyViewModel model)
{
if (ModelState.IsValid)
{
// The model is valid => process it
return RedirectToAction("Success");
}
// Validation failed => redisplay the view in order to show error
// messages
return View(model);
}

关于asp.net-mvc - Asp.Net MVC - FluentValidation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4043110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com