从角度12将类对象发送到asp.net core web api http get方法

Posted

技术标签:

【中文标题】从角度12将类对象发送到asp.net core web api http get方法【英文标题】:Sending class objet to asp.net core web api http get method from angular 12 【发布时间】:2021-12-21 06:44:51 【问题描述】:

我有一个如下的 web 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; 
     
`

问题:

我想从 Angular 12 向上面的 Http Get 操作方法发送一个 SearchViewModel 类类型的对象。

我可以通过 [FromBody] 装饰 search 参数来使用 HttpPost 来实现这一点。但是有人可以告诉我如何使用 HttpGet 来做到这一点。

提前致谢。

【问题讨论】:

【参考方案1】:

HttpGet 无法发布正文。所以你不能用 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

【讨论】:

以上是关于从角度12将类对象发送到asp.net core web api http get方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 fetch 将 FormData 从 javascript 发送到 ASP.NET Core 2.1 Web API

ASP.NET Core学习——6

ASP.NET Core学习——6

如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?

如何将对象数组发送到服务器。 Asp.Net Core 3.1 405 方法不允许

ASP.NET Core MVC - 使用 Ajax 将数据发送到另一个模型中的模型