ModelState is valid with null model

前端 未结 4 1512
刺人心
刺人心 2020-12-03 02:15

I have a Model object with a required attribute

public class ApiPing
{
    [Required]
    public DateTime ClientTime { get; set; }

    public DateTime Server         


        
4条回答
  •  自闭症患者
    2020-12-03 02:55

    Here is an action filter to check for null models or invalid models.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http.Controllers;
    using System.Web.Http.Filters;
    
    namespace Studio.Lms.TrackingServices.Filters
    {
        public class ValidateViewModelAttribute : ActionFilterAttribute
        {
            public override void OnActionExecuting(HttpActionContext actionContext)
            {
                if (actionContext.ActionArguments.Any(kv => kv.Value == null)) {
                    actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Arguments cannot be null");
                }
    
                if (actionContext.ModelState.IsValid == false) {
                    actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
                }
            }
        }
    }
    

    You can register it globally:

    config.Filters.Add(new ValidateViewModelAttribute());
    

    Or use it on demand on classes/actions

     [ValidateViewModel]
     public class UsersController : ApiController
     { ...
    

提交回复
热议问题