【问题标题】:Modelbinding from both body and route parameters web api来自 body 和 route 参数 web api 的模型绑定
【发布时间】:2017-10-06 07:36:54
【问题描述】:

我需要提供一个模型,其中包含我希望在 POST 请求中绑定的所有参数。然而,其中一些参数来自 Route,一些来自正文,以 JSON 序列化字符串的形式。

WebApi 中有没有办法处理这个问题,这样我就可以只拥有单个对象而无需指定额外的原始参数。

所以而不是这个。

public async Task<IActionResult> Post(int agencyId, string stockTypeKey, int stockClassId, [FromBody] ListingPostRequest request)

我在找这个

public async Task<IActionResult> Post([FromBody]ListingPostRequest request) 

public class ListingPostRequest : IRequest<ListingPostResponse>, IAgencyRequest
{
    public int AgencyId { get; set; }

    public string StockTypeKey { get; set; }

    public int StockClassId { get; set; }

    public ListingPostRequestApi Model { get; set; }
}

【问题讨论】:

  • 听起来您正在寻找的是环境路由值,或者隐藏的回发值作为后备。你也试过了吗?
  • 不,我不确定我明白你的意思抱歉
  • 好的,ListingPostRequest 的 AgencyId、stockTypeKey 和 stockClassId 属性是什么?
  • 抱歉,在我的示例中,我忘记显示对象模型是从body 绑定的。已更新
  • 啊,是的,你提到了,但这是我不熟悉的东西,所以巧妙地迷失了我。我仍然不知道您的原语是否在ListingPostRequest 中重复,这使得很难回答。如果您可以展示该课程,那将很有帮助。但我认为基于使用 [FromBody] 和类型转换器标题下的docs.microsoft.com/en-us/aspnet/web-api/overview/…,您正在寻找的内容是不可能的。这有什么帮助吗?

标签: asp.net-mvc asp.net-web-api .net-core


【解决方案1】:

据我了解,[FromBody][FromUri] 基本上是DefaultModelBinder 的说明。这是每个参数的一个或另一个命题,您要做的是让它为复杂对象参数的不同属性动态选择。也许可以通过编写自定义模型绑定器来完成,但这可能比您所追求的要复杂一些。

有关模型绑定和[FromBody] 属性的更多信息:https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 2014-09-10
    • 1970-01-01
    • 2014-12-23
    • 2013-11-29
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多