4

我想要实现的是修剪 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()));

但是我想找到一种更通用的方法,所以我不需要在我的项目中装饰每个模型类

4

1 回答 1

0

我相信,如果您的客户端代码发送" 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;
于 2013-10-07T07:59:00.493 回答