【发布时间】:2015-03-18 23:30:58
【问题描述】:
我正在使用日常构建调查 ASP.NET vNext 中的 Web Api。在一个 web api 2x 项目中,我在某些情况下使用了 HttpParameterBinding 和 ParameterBindingAttribute(参见http://bit.ly/1sxAxdk);但是,我似乎在 vNext 中都找不到。这些课程是否/将存在?如果没有,我的替代方案是什么?
编辑(1-22-15):
我希望能够将复杂的 JS 对象序列化为 JSON 字符串,将 JSON 字符串放入隐藏的表单字段(比如 name="data"),提交表单,然后将我的参数绑定到该 JSON 对象在服务器上。这永远不会由人类完成,而是由机器完成。如果 JSON 直接在请求正文而不是表单数据中发送,我也希望这种机制能够正常工作。我还需要它来处理几种不同类型的对象。
我已经能够以几种不同的方式在 Web Api 2.2 中完成这个场景,包括自定义 ModelBinder;但是,我记得阅读了一篇 MSFT 博客文章,该文章建议使用 ModelBinder 进行查询字符串绑定,使用格式化程序作为请求正文,使用 HttpParameterBinding 进行更一般的场景。可以在 ModelBinder ASP.NET 5 中读取请求正文,还是有更好的机制?如果是这样,那么案例关闭,我将移植我的 ModelBinder 并进行一些小改动。
我也不确定 IInputFormatter 在这种情况下是否适合我。
【问题讨论】:
-
没有更多的 ParameterBindingAttribute。您可以创建自定义模型绑定器并注册它。或者在您的情况下,您可以只使用 [FromForm]。如果您可以在您的问题中提供更详细的示例,我可能会帮助您提供实际示例。我们称之为贪婪模型绑定器的示例可以在以下位置找到:github.com/aspnet/Mvc/blob/dev/src/… 并且注册就像 services.SetupOptions
(options => options.ModelBinders.Insert(0, new YourCustomBinder()); 一样简单 -
谢谢一晒!我已经更新了我原来的问题。
-
IInputFormatter 可以正常工作。我发布了完整的答案。
标签: asp.net-web-api asp.net-core