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