将 class 对象发送到 asp.net 核心网络 api 来自 angular 12 的 http get 方法

Sending class objet to asp.net core web api http get method from angular 12

我有一个网络 api 方法如下 `

[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase
{
    private readonly ISearchService _searchService;

    public TestController(IRequestService searchService)
    {
        _searchService = searchService;
    }

    [HttpGet, Route("search")]
    public List<ResponseViewModel> search([FromBody] SearchViewModel search)
    {
        return _searchService.GetSearchResults(search);
    }
}`

SearchViewModel.cs

`public class SearchViewModel
     {
          public int ProductId { get; set; }     
          public int StatusId { get; set; }
          public int ItemId  { get; set; }
     }
`

问题:

我想将 SearchViewModel class 类型的对象发送到上述 Http Get 操作方法 angular 12.

我可以用 HttpPost 通过用 [FromBody][=32 装饰 search 参数来实现这个=]。但是有人可以告诉我如何使用 HttpGet .

来做到这一点吗

提前致谢。

HttpGet 不能 post 正文。所以你不能用 HTTP get 方法传递一个对象。但是您可以传递 URL 查询参数,然后稍后在控制器中捕获它们。

比如您可以通过查询参数传递这些数据。那么您的 url 可能与查询参数类似。

http://yourbaseurl/search?ProductId=1&StatusId=34&ItemId=190

然后你可以像这样在 c# 中捕获参数。

public IActionResult YourAction([FromQuery(Name = "ProductId")] string productId,[FromQuery(Name = "StatusId")] string statusId, [FromQuery(Name = "ItemId")] string itemId)
{
    // do whatever with those params
}