【问题标题】:Using FromUri OR FromBody in MVC 5在 MVC 5 中使用 FromUri 或 FromBody
【发布时间】:2016-03-31 15:12:48
【问题描述】:

我想公开我的 POST 方法,允许用户使用编码在请求正文中的 url 或 中的参数调用它。伪代码:

public HttpResponseMessage MyMethod([FromUri, FromBody] parameters)
{
    //..
}

通过公开两个方法甚至是不可能的:

public HttpResponseMessage MyMethod([FromUri] parameters)
public HttpResponseMessage MyMethod([FromBody] parameters)

因为它们具有相同的签名。如何以简单的方式实现这一点?

【问题讨论】:

    标签: c# asp.net-mvc-5


    【解决方案1】:

    你不能开箱即用;如果你尝试同时使用这两个属性,你会得到这个很好的错误:Can't bind parameter 'xxx' because it has conflicting attributes on it.

    两种可能的解决方案:

    1. 使用两种不同的方法,但使用两个不同的动词(例如,一个获取、一个发布)- 简单的方法
    2. 仅使用[FromUri] 并使用自定义操作过滤器(如this)来检查正文内容,如果存在,手动解析它并将其绑定到正确的方法参数 - 不太简单的方法,但更强大。

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-09
      • 2012-08-17
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2014-09-08
      相关资源
      最近更新 更多