2012-01-09 169 views
0

我使用從URL請求參數的方式是請求URL參數

如果URL是 - http://www.domain.ext/default.aspx?id=123&name=abc

在上面的例子中,我們可以請求從default.aspx頁2參數即idname作爲string myid = Request["id"];string myname = Request["name"];

但是在Facebook個人資料的URL中顯示了這種類型的東西。

http://www.facebook.com/john.deohttp://www.facebook.com/madcoder

在哪裏並且不會有任何頁面的名稱和語法定義名稱。如何從C#中的URL請求參數(john.deo或madcoder)?

+0

這不是一個真正的參數 - 它是URL的一部分。我想你必須自己解析出URL。您可能能夠將URL部分提交給圖形API,並取回用戶標識,如果這是您真正需要的。 – Rup 2012-01-09 10:28:07

回答

3

這可以通過向htaccess文件添加規則來實現。

RewriteRule ^([A-Za-z0-9_-]*)/$ index.php?name=$1 

此規則將意味着,如果你輸入到瀏覽器http://www.mydomain.co.uk/john您可以通過請求「名稱」參數中獲得的價值「約翰」。

+0

太棒了!但我猜htaccess適用於Apache服務器嗎?我正在研究IIS。 – 2012-01-09 10:31:15

+0

看看http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx – psych 2012-01-09 10:34:41

+0

太棒了!感謝您的信息:) – 2012-01-09 10:36:47

0

這些不是URL參數,它們用於標識資源。
你可以使用正則表達式只是客觀的是得到給定的url中的「john.deo」

+0

你可以請我提供任何示例代碼來使用正則表達式嗎? – 2012-01-09 10:43:28

0

這一切都取決於你的解決方案有多複雜。但一個簡單的方法就是使用頁面路由。

你可以在你的Global.asax -> Application_Start註冊的路線是這樣的:

RouteTable.Routes.MapPageRoute("Route name", "requestformat", "physicalfile", checkPhysicalUrlAccess, routeValueDefaults, routeConstraints); 

然後在你的請求格式指定一些參數,如「(名稱)」,然後默認的'routeValueDefaults'字典的名稱參數和放在'routeContstrains'字典中對其進行限制。約束可以通過一個指令表達式來指定,所以如果你想讓這些名字全部是唯一的字符,你可以使用像這樣的「\ w +」。

該參數然後結束於物理頁面的Page.RouteData["name"]集合中。