【问题标题】:Passing a dynamic where clause through Web API通过 Web API 传递动态 where 子句
【发布时间】:2019-01-26 09:56:26
【问题描述】:

我目前正在创建一个将与 Angular 前端交互的 .NET Core Web API。 Web API 需要能够基于动态构建的 where 语句返回数据。例如,我有一个具有以下模型的对象

{
    "accountCode": "ABC123",
    "addressLine1": "AddressLine1",
    "addressLine2": "AddressLine2",
    "addressLine3": "AddressLine3",
    "addressLine4": null,
    "addressLine5": null,
    "businessUnitName": "",
    "companyRegistrationNumber": null,
    "name": "My supplier",
    "postcode": "BA112RP",
    "supplierId": 3,
    "vatRegistrationNumber": null
}

现在不是让我的控制器方法设置有 12 个不同的参数,并且每当我添加一个新属性时都需要添加一个额外的参数,有没有一种方法可以让我拥有一个动态参数(KeyValuePair 类型排列)?

【问题讨论】:

  • 在重新阅读您的问题时,我意识到我误读了您的问题。你能澄清一下你的要求吗?您正在尝试将 KeyValuePair 从您的 WebAPI-Controller 发送到您的 Angular 前端?我看不出有什么阻碍你的。 Dictionary 或 JObject (Newtonsoft.JSON) 应该可以解决问题
  • 我希望将 KeyValuePair 从我的前端传递到我的 WebApi。您对原始问题的回答解决了它,只是还没有机会将其标记为正确。非常感谢 Severin
  • 那我很高兴能帮上忙 :) 干杯

标签: .net-core asp.net-core-webapi


【解决方案1】:

您的 asp.net-core web api 能够将输入隐式转换为任何给定的对象,例如:

[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
    public IActionResult PostObject([FromBody] MyObject obj)
    {
        // Your Code goes here
    }
}

默认情况下,这需要 JSON 格式,但您也可以使用其他格式,例如 FormData。

此外,它不能是具有已定义属性的对象。您也可以使用简单的 KeyValuePair。查看Parameter Binding in ASP.NET Web API,您可以在其中找到有关如何最好地解决您的问题的更多建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 2013-12-19
    • 2015-10-20
    • 2012-01-13
    • 1970-01-01
    • 2020-01-15
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多