0

我有一个习惯ValidateModelAttribute,但由于某种原因它没有触发

using System.Net;
using System.Web.Http.Controllers;
using System.Net.Http;
using System.Web.Http.Filters;

namespace blank.Utilities.CustomAttributes
{
    public class ValidateModelAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            if (actionContext.ModelState.IsValid == false)
            {
                actionContext.Response = actionContext.Request.CreateErrorResponse(
                    HttpStatusCode.BadRequest, actionContext.ModelState);
            }
        }
    }
}

这是邮政电话

[ValidateModelAttribute]
[HttpPost]
[Route("update")]
public IHttpActionResult Post(ActivityPctCompleteDto actDto) {
    _activityService.UpdatePctComplete(actDto);
    return Ok();
}

我在帖子中添加了fromBodyfromUri,但它不起作用。我在这里想念什么?

这是我的 Dto

public class ActivityPctCompleteDto
{
    [Required(ErrorMessage = "ActivityID is an invalid Guid value.")]
    public Guid? Id { get; set; }

    [Required(ErrorMessage = "PctComplete is an invalid Decimal(5,4) value.")]
    public decimal? PctComplete { get; set; }
}
4

1 回答 1

0

我试过你的代码和动作过滤器对我来说很好。要诊断您的问题,请检查以下内容:

  1. 你是ActionFilterAttributeSystem.Web.Http.Filters命名空间使用吗?对来自 的过滤器有一个常见的混淆System.Web.Mvc
  2. 您的请求会得到什么 HTTP 结果?可能它在 ASP.NET 管道的早期阶段失败了,比如路由或身份验证?
  3. 你确定这个Post()方法确实处理了请求吗?尝试设置断点并检查它是否命中。
于 2017-12-01T05:47:39.567 回答