嘿,我想用動態引數實作一些東西。
例如我有這個控制器動作:
[HttpGet]
public async Task TestParam(string firtname, string lastname, string persnr)
{
Console.WriteLine("Firstname: " firtname);
Console.WriteLine("Lastname: " lastname);
Console.WriteLine("Persnr: " persnr);
}
我的請求是否可能如下所示:
| 網址 | 名 | 姓 | 人員 |
|---|---|---|---|
URL/?firtname=Test&lastname=Test&persnr=123 |
測驗 | 測驗 | 123 |
URL/?firtname=Test&persnr=123 |
測驗 | 123 | |
URL/?lastname=Test&persnr=123 |
測驗 | 123 | |
URL/?persnr=123 |
123 |
所以基本上我不必寫所有引數?
因為如果我讓它們可選
TestParam(string firtname = "", string lastname = "", string persnr = "")
我必須這樣寫網址
URL/?firtname=&lastname=&persnr=123
只看到 persnr.
實作這一目標的最佳方法是什么?
uj5u.com熱心網友回復:
您可以為您的查詢引數創建一個模型類,如下所示:
public class TestQuery
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Persnr { get; set; }
}
然后你可以TestParam像這樣替換你的簽名:
public async Task TestParam([FromUri]TestQuery queryParams)
有關更多資訊,請查看此 MSDN 文章。
uj5u.com熱心網友回復:
Peter Csala 的回答有效,但我會有第二個解決方案。
[HttpGet("{uri}")]
public async Task<string> TestParam(string uri)
{
Uri myUri = new Uri("http://localhost:2000/?" uri);
string firstname = HttpUtility.ParseQueryString(myUri.Query).Get("firstname");
string lastname = HttpUtility.ParseQueryString(myUri.Query).Get("lastname");
string persnr = HttpUtility.ParseQueryString(myUri.Query).Get("persnr");
Console.WriteLine("Firstname: " firtname);
Console.WriteLine("Lastname: " lastname);
Console.WriteLine("Persnr: " persnr);
}
這將讀取您在 uri 中寫入的所有引數。例如,姓氏未在 uri 中設定,它將為空。
HttpUtility.ParseQueryString
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/354057.html
