c# - Web Api 中的语法糖 - 如何省略 [FromBody]

标签 c# asp.net-core-mvc syntactic-sugar

可以省略[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>());

您可以看到the default being registered in the source ,也是。

关于c# - Web Api 中的语法糖 - 如何省略 [FromBody],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30603138/

相关文章:

c# - 在 ASP.NET Core 中模拟 User.Identity 以进行单元测试

python - python for循环中的赋值可能吗?

php - PHP 中的 bool 赋值运算符

c# - 使用 LinqToXSD,如何在不强制转换的情况下获取 xml 中的对象?

html - 默认检查不适用于 Html.RadioButtonFor

c# - 使用 HttpClient 发布并读取 HttpResponseMessage 状态

syntax - 有没有什么程序可以添加Clojure的括号?

c# - Visual Studio 颜色属性编辑器中的自定义调色板

c# - 将 XML 文件添加到您的 XNA 项目

c# - 如何使用 Linq 将数据表过滤为数据表?