C# ASP.NET Core 在 cshtml 取得 QueryString 參數內容

有的時候在前端頁面也會需要拿到網址或是網址上的 QueryString ,該怎麼拿到呢?

測試網址:http://localhost:5241/home/index?a=1&b=2&c=3&c=33
其中 c 參數是陣列的形式,內容有 3 和 33

直接看程式碼:
    
@using Microsoft.Extensions.Primitives
@{
	Console.WriteLine($"Path:{Context.Request.Path}"); // /home/index
    
	Console.WriteLine($"QueryString:{Context.Request.QueryString}"); // ?a=1&b=2&c=3&c=33

	// 印出所有 QueryString 
	foreach (KeyValuePair<string, StringValues> keyValuePair in Context.Request.Query)
	{
		Console.WriteLine(keyValuePair.Key + " : " + keyValuePair.Value);
	}
    /*
    a : 1
    b : 2
    c : 3,33
    */
    
    // --- 取指定 QueryString 的第一種方式 ---
	Context.Request.Query.TryGetValue("a", out StringValues a);
	Console.WriteLine($"a:{a}"); // a:1

	Context.Request.Query.TryGetValue("b", out StringValues b);
	Console.WriteLine($"b:{b}"); // b:2

	Context.Request.Query.TryGetValue("c", out StringValues c);
	Console.WriteLine($"c:{c}"); // c:3,33

	Context.Request.Query.TryGetValue("d", out StringValues d); // 沒有這個參數
	Console.WriteLine($"d:{d}"); // 
    
    
    // --- 取指定 QueryString 的第二種方式 ---
	StringValues aValues = Context.Request.Query["a"];
	Console.WriteLine($"aValues:{aValues}"); // aValues:1

	StringValues bValues = Context.Request.Query["b"];
	Console.WriteLine($"bValues:{bValues}"); // bValues:2

	StringValues cValues = Context.Request.Query["c"];
	Console.WriteLine($"cValues:{cValues}"); // cValues:3,33
    
    
    // StringValues 可以再歷遍,如果是陣列就有多個
	foreach (string? stringValue in cValues)
	{
		Console.WriteLine($"stringValue:{stringValue}");
	}
    /*
    stringValue:3
	stringValue:33
    */
}
    

留言