如何修剪 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()));
但我想找到一种更通用的方法,这样我就不需要装饰项目中的每个模型类。
我相信
,如果您的客户端代码发送带有空格的" 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;