我有一个自定义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);
}
}
}
}
这是Post post
[ValidateModelAttribute]
[HttpPost]
[Route("update")]
public IHttpActionResult Post(ActivityPctCompleteDto actDto) {
_activityService.UpdatePctComplete(actDto);
return Ok();
}
我在帖子中添加了fromBody
和fromUri
,但它不起作用。我在这里缺少什么?
这是我的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; }
}
答案 0 :(得分:0)
我已经尝试过您的代码和动作过滤器对我来说很好。要诊断您的问题,请检查以下内容:
ActionFilterAttribute
命名空间中的System.Web.Http.Filters
?来自System.Web.Mvc
的过滤器存在常见问题。Post()
方法确切地处理了请求吗?尝试设置断点并检查它是否命中。