[英]ASP.net MVC routing parameters
我有這樣的路線:
http://localhost:1936/user/someOne/##feed%233dbfc1b3-44b4-42b4-9305-4822ac151527
我的路線配置如下:
routes.MapRoute("Profile", "user/{userName}/{treningId}",
new { controller = "Profile", action = "Index", userName = UrlParameter.Optional, treningId = UrlParameter.Optional }
);
然后在我的控制器中執行以下操作:
public ActionResult Index(string username, string treningId)
{
//more code here
}
但是我無法得到這一部分: ##feed%233dbfc1b3-44b4-42b4-9305-4822ac151527
,在調試代碼時,我看到treningId為null。
我的問題是##之后如何獲得URL的一部分?
這是不可能的,因為請求中不包含哈希。 它們保留供URL在客戶端使用(通常用於標記文檔中/部分中的特定位置)。
您有兩個選擇。 可以將哈希字符編碼為%23
:
%23%23feed%233dbfc1b3-44b4-42b4-9305-4822ac151527
或使用其他字符/路線。
你不能
在第一個#之后,瀏覽器根本不會將任何內容發送到服務器(您可以通過使用瀏覽器中的調試器檢查瀏覽器和服務器之間的通信來驗證此情況)。 這是因為#(哈希)字符在HTTP中具有特殊含義 。
你為什么不只是
http://localhost:1936/user/someOne?myparameter=feed%233dbfc1b3-44b4-42b4-9305-4822ac151527
),或者, 您編寫URL的方式,瀏覽器不會提交片段標識符的任何部分-URL的哈希部分。 這樣,您的MVC應用將永遠不會收到該值,因此始終將其設置為null
。
要使該值可用於MVC,請轉義#
以避免它們標記URL片段部分的開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.