如何修剪 MVC WEB API 中所有传入的 JSON 对象字段

本文关键字:字段 对象 JSON API 何修剪 修剪 WEB MVC | 更新日期: 2023-09-27 18:34:04

我要实现的是修剪MVC Web Api项目中字符串类型的所有传入对象属性。

我认为模型活

页夹应该是一个解决方案,但如果我尝试设置自定义模型活页夹而不是ModelBinders.Binders.DefaultBinder..

例如,Json是{"Name": " Test Name ", "Number": 15}

例如 - 如果我明确指定ModelBinder,它可以工作。

[ModelBinder(typeof(MyCustomBinder))]
    public class TestObject
    {
        public string Name { get; set; }
        public int Number { get; set; }
    }

控制器...

public class TestController : ApiController
{
    // POST api/test
   public void Post([ModelBinder(typeof(MyCustomBinder))]TestObject value)
   {
   }

和注册

 ModelBinders.Binders.Add(new KeyValuePair<Type, IModelBinder>(typeof(TestObject), new MyCustomBinder()));

但我想找到一种更通用的方法,这样我就不需要装饰项目中的每个模型类。

如何修剪 MVC WEB API 中所有传入的 JSON 对象字段

我相信

如果您的客户端代码发送带有空格的" Test Name "之类的内容,那么用户实际上可能希望它以这种方式。但是,如果您参加以困难的方式阻止他这样做,而不是处理前端的<input type='text' .. />,则最终可能会访问请求的Form集合。

public ViewResult Index()
{
    Request.Form["Name"] = Request.Form["Name"].Trim();
    return View();
}

或者,您可以通过其他几种方式执行此操作:

  • 您可以创建一个通用的 asbtract 控制器类,该类将在其 OnActionExecuting 方法中执行相同的操作。
  • 您可以定义一个ActionFilter属性类,无论您使用它标记什么方法或控制器类,它都会执行此操作。

由于您使用的是限量版控制器,因此您仍然可以访问 Request 属性,以便:

HttpRequestBase request = ((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request;