我在ASP.NET Web API控制器中有相當長的Get()方法。事情是這樣的:在ASP.NET Web API中查找無法識別的查詢參數
public PaginatedResult Get(int perPage = 10, int pageNum = 0, string param1 = null, [...] string param20 = null)
我想是能夠處理的情況下,其中一個請求包括查詢參數,這不是方法簽名的一部分。也就是說,如果有人請求這樣的:
/?perPage=10¶n19=foo¶m21=bar
...我希望能夠說,「嘿,既不是‘paran19’也不是‘param21’存在,這樣他們就不會影響這個結果查詢!」
我能想到的處理此問題的唯一方法是調用GetQueryNameValuePairs(),然後使用反射將該列表與我的Get()方法接受的參數進行比較。這似乎是這個問題的矯枉過正。有沒有更好的辦法?理想情況下,一個足夠靈活,可以輕鬆應用於多種方法。
我認爲你最終需要在其他地方尋找那些「不匹配」的參數(你提到了一個好方法:GetQueryNameValuePairs)。您可能需要考慮構建一個自定義ModelBinder來執行此操作,以免最終將控制器的複雜性添加到控制器中。 –