我想要实现的是修剪MVC Web Api项目中string类型的所有传入对象属性。
我认为模型绑定器应该是一个解决方案,但如果我尝试设置自定义模型绑定器而不是ModelBinders.Binders.DefaultBinder
,它就不会被击中..
{"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()));
但是我想找到更通用的方法,所以我不需要在项目中装饰每个模型类
答案 0 :(得分:0)
我相信,如果您的客户端代码发送的内容与" Test Name "
之类的内容有空白,那么用户可能实际上希望它是那样的。但是,如果您参加的是以一种困难的方式阻止他这样做,而不是处理前端的<input type='text' .. />
,那么您最终可能会访问请求的Form
集合。
public ViewResult Index()
{
Request.Form["Name"] = Request.Form["Name"].Trim();
return View();
}
或者,您可以通过其他几种方式来实现:
OnActionExecuting
方法中执行相同的操作。ActionFilter
属性类,无论您使用它标记哪种方法或控制器类,都可以执行此操作。由于您使用的是限量版控制器,您仍然可以访问Request
属性:
HttpRequestBase request = ((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request;