簡體   English   中英

如何傳遞名稱包含連字符的查詢字符串參數?

[英]How do I pass query string parameters with names containing hyphens?

我需要將查詢字符串傳遞給重定向。 我知道你可以這樣做:

return RedirectToAction("Index", new { param1 = "hello" });

將轉到/Index?param1=hello

但是我需要傳遞一個名稱中帶有連字符的參數。 我們稱之為"data-param" 由於 C# 名稱中不允許使用連字符,因此我無法以上述方式執行此操作。 我知道在 MVC 的某些地方,下划線用於處理這個問題,但這在這里也不起作用,下划線按原樣傳遞給查詢字符串。

所以我的問題是,如何重定向到/Index?data-param=hello

如果你正在嘗試構建一個 url,你總是可以稍微繞過 MVC 路由,並以老式的方式傳遞完整的 url。

string dataParam="hello";
int otherParam=5;
return Redirect( String.Format("/Index?data-param={0}&data-param2={1}", dataParam, otherParam) );

如果您要離開自己的 MVC 應用程序,那么您可能無論如何都不需要RedirectToAction ,除非您要重定向到某個操作。

這有效(我使用的是 ASP.NET Core 3.1 並且無法使用早期版本):

var params = new Dictionary<string, string>()
{
    { "data-param1", "hello" }
    { "data-param1", "2" }
};
return RedirectToAction("Index", params);

如果需要,您可以改用Dictionary<string, object>() ,但您會放棄一些控制權(例如, false在 URL 中被翻譯為"False"而不是"false" )。 您應該使用nameof()以獲得更好的可維護性:

var params = new Dictionary<string, object>()
{
    { "data-param1", "hello" }
    { "data-param2", 2 }
};
return RedirectToAction(nameof(Index), params);

另請注意,此字典技術也適用於其他方法,例如RedirectToRoute()

暫無
暫無

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

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