servicestack,fluentvalidation,Asp.net Mvc 4,servicestack,Fluentvalidation" /> servicestack,fluentvalidation,Asp.net Mvc 4,servicestack,Fluentvalidation" />

Asp.net mvc 4 ServiceStack-MVC操作中未触发验证

Asp.net mvc 4 ServiceStack-MVC操作中未触发验证,asp.net-mvc-4,servicestack,fluentvalidation,Asp.net Mvc 4,servicestack,Fluentvalidation,我对以下DTO制定了一些验证规则: [Route("/warranties/{Id}", "GET, PUT, DELETE")] [Route("/warranties", "POST")] public class WarrantyDto : IReturn<WarrantyDto> { public int Id { get; set; } public int StatusId { get; set; } public string AccountNu

我对以下DTO制定了一些验证规则:

[Route("/warranties/{Id}", "GET, PUT, DELETE")]
[Route("/warranties", "POST")]
public class WarrantyDto : IReturn<WarrantyDto>
{
    public int Id { get; set; }
    public int StatusId { get; set; }
    public string AccountNumber { get; set; }
}
然后,当我发布保修期时,如果我没有输入
帐号,验证似乎不起作用:

[POST("create")]
public ActionResult Create(WarrantyDto model)
{
    if (!ModelState.IsValid) return View(model);

    _warrantyService.Post(model);
    return RedirectToAction("Index");
}

它似乎只是点击了
\u warrantyService.Post(模型)没有尝试首先验证,有什么想法吗?

我相信ServiceStack会在其请求/响应管道中处理一些FluentValidation规则集。但是,在MVC控制器中,您必须处理要使用的规则集的传递。您还应该了解不在规则集中的规则是如何执行的,因为ServiceStack执行规则的方式与“标准”FluentValidation执行规则的方式不同

[POST("create")]
public ActionResult Create([CustomizeValidator(RuleSet = "POST")]WarrantyDto model)
{
    if (!ModelState.IsValid) return View(model);

    _warrantyService.Post(model);
    return RedirectToAction("Index");
}
[POST("create")]
public ActionResult Create(WarrantyDto model)
{
    if (!ModelState.IsValid) return View(model);

    _warrantyService.Post(model);
    return RedirectToAction("Index");
}
[POST("create")]
public ActionResult Create([CustomizeValidator(RuleSet = "POST")]WarrantyDto model)
{
    if (!ModelState.IsValid) return View(model);

    _warrantyService.Post(model);
    return RedirectToAction("Index");
}