[英]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.