可以省略[FromBody]
吗?
[HttpPost]
public string SomeMethod([FromBody]SomeModel model)
{
return "OK";
}
我应该应用一些全局属性吗?如何实现这一目标?
最佳答案
MVC 5 中的模型绑定(bind)属性为操作上的每个参数指定一个“BindingSource
”,并且也可以为 Controller 上的每个属性指定一个“BindingSource
”。您可以具体查看为 BodyModelBinder
中的 FromBody
属性选取它的代码。
首先我要说的是,您应该注意,从 beta6 开始(我认为 beta5 中的某些点),不允许使用 BindingSource.Body
具有多个参数/属性,如果您将多个参数保留为默认值,您将无法使用您的操作。如果您想注释更多,这实际上可能是理想的;我猜你不会。
您可以在 DefaultApiDescriptionProvider
中看到设置默认源的位置;不幸的是,此时没有钩子(Hook)可以绑定(bind),并且该方法本身是私有(private)的而不是虚拟的;您需要重新实现整个类。
一旦您拥有了它,就可以很容易地将其注册到您的 ConfigureServices
中来使用它:
services.TryAdd(ServiceDescriptor.Transient<IApiDescriptionProvider, YourApiDescriptionProvider>());
关于c# - Web Api 中的语法糖 - 如何省略 [FromBody],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30603138/