将查询字符串传递给Controller ASP.NET Core

时间:2018-06-14 21:34:41

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

我想将productId通过查询字符串传递给控制器​​,控制器将根据productId检索数据。将查询字符串传递给控制器​​的正确方法是什么?

http://localhost:22343/Product?pid=1

Route("api/getdevice")]
    [HttpGet("{pid}")]
    public IActionResult GetById(string pid)
    {
        int PId = Convert.ToInt32(pid);

        var selectProducts = (from p in _db.product
                            where p.ProductId == PId
                            select p);

ProductId是Device id中的外键,Device Id是主键。

AJAX: 网址:API /的getDevice

我正在尝试将数据打印到html。

2 个答案:

答案 0 :(得分:0)

我相信你正在混合api。您不应该使用RouteAttribute,而是将完整路径传递给HttpGet,如下所示:[HttpGet("api/getdevice/{pid}")]

为了传递结果,您需要更改方法签名以返回您的产品集合所包含的内容,或者将其投影到dto,如果它包含许多您想要从api的使用者隐藏的内容,如下所示:

var process = _db.product.SingleOrDefault(p => p.ProductId == PId);
return process != null ? new MyDto(process) : null;

答案 1 :(得分:0)

以一种常见的方式,我使用它,即路线中的参数。

[Route("api/getdevice/{pid}")] 
[HttpGet] 
public IActionResult GetHotelById(int PId) 
{ 
var selectProducts = (from p in _db.product where p.ProductId == PId select p);
 }

您可以直接在参数中检索类型,不解析。

并将其称为:

http://localhost:22343/api/getdevice/1

假设您的基本网址是“/".

此致