簡體   English   中英

C# MVC HttpGet 添加參數到路由

[英]C# MVC HttpGet add parameters to route

在我的 controller 我有這樣的動作:

    [Route("api/[controller]")]
    [ApiController]
    public class ManageOPIdentifierController : ControllerBase
    {
        [HttpGet("[action]")]
        public OPIdentifiersVM Get(int pageSize, int pageNumber)
        {

如何將參數pageSize和pageNumber添加到HttpGet? 因為現在當我有第二個不帶參數的方法 Get 時,我得到錯誤,因為有兩個具有相同定義的路由。 第一個 HttpGet 路由應該怎么看?

[HttpGet("[action]/{pageSize}&{pageNumber}")]

上面的代碼不起作用

編輯:我的問題被誤解了。 我有兩種方法獲取:

[HttpGet("[action]")]
public OPIdentifiersVM Get(int pageSize, int pageNumber)

[HttpGet("[action]")]
public List<OPIdentifierVM> Get()

從參數 pageSize 和 pageNumber 讀取值沒有問題。 問題是我有兩個具有相同 Http("[action]") 的方法。 我得到錯誤:

AmbiguousMatchException: The request matched multiple endpoints. Matches: 
ManageUuidWeb.Controllers.ManageOPIdentifierController.Get (OneProjectIdentifier.Web)
ManageUuidWeb.Controllers.ManageOPIdentifierController.Get (OneProjectIdentifier.Web)

如果我很好理解評論,我必須更改其中一種方法的名稱。 但我想知道是否可以有兩個方法名稱相同但參數不同?

[HttpGet("[action]")]
public OPIdentifiersVM Get([FromUri] int pageSize, [FromUri] int pageNumber)

(或[FromRoute]如果您使用的是 asp.net 內核),那么它將被

http://localhost/api/ManageOPIdentifier/Get/10/1

或為此使用查詢參數(這將是更好的解決方案)

[HttpGet("[action]")]
public OPIdentifiersVM Get([FromQuery] int pageSize, [FromQuery] int pageNumber)

然后

http://localhost/api/ManageOPIdentifier/Get?pageSize=10&pageNumber=1

當您的操作名稱等於 http 動詞方法名稱時,您也可以使用簡單的[HttpGet]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM