重寫我需要實現asp.net URL中使用Global.asax中的正則表達式改寫一行此解決方案ASP.NET動態URL在Global.asax中
www.dummydomain.com/a/1/b/2/c/3/d/4/...
www.dummydomain.com/b/2/c/3
www.dummydomain.com/b/2/a/1/c/3/
它意味着改變參數順序不應該影響+不同參數的數量將是動態的+我可以通過名稱訪問這些參數值,例如a,b,c
重寫我需要實現asp.net URL中使用Global.asax中的正則表達式改寫一行此解決方案ASP.NET動態URL在Global.asax中
www.dummydomain.com/a/1/b/2/c/3/d/4/...
www.dummydomain.com/b/2/c/3
www.dummydomain.com/b/2/a/1/c/3/
它意味着改變參數順序不應該影響+不同參數的數量將是動態的+我可以通過名稱訪問這些參數值,例如a,b,c
您可以對字符串使用拆分選項,然後將您的值放入字典中。這假定你的模式永遠不會中斷。
Dim MyContext = HttpContext.Current
Dim url = Request.Path.ToLower()
url = url.Trim("/")
Dim Vals = url.Split("/")
Dim Dict As New Dictionary(Of String, String)
for i = 0 to (vals.count/2)-1
Dict.Add(vals(i),vals(i+1))
next
然後,您可以使用字典對象來查找變量。
在Application_BeginRequest方法的global.asax文件中運行此方法,並調用MyContext.RewritePath將用戶發送到正確的路徑。
if dict("a") = 1 then MyContext.RewritePath("new URL")
你真的鼓勵他這樣做嗎? :)無論哪種方式,你展示了一些完全不同於他實際要求的東西。他希望在global.asax中爲url路由指定一個路由,使用一行代碼,而不是如何解析url字符串......此外,當我們使用url路由時,我們會引用像這樣的url變量:RouteData。值[「nameOfVarSpecifiedInTheRoute」],而不是通過解析url本身。當我們已經有檢索url變量值的方法時,沒有看到像這樣解析它的原因... – walther
他可以使用這些參數來找出他的路線。即使它很奇怪,我也會回答這些人的問題。爲了您的參考,您可以在Application_BeginRequest方法的global.asax文件中運行此命令,並調用MyContext.RewritePath將用戶發送到正確的路徑。 – Middletone
您可以通過web.config配置URL重寫規則,也可以編程方式。
請看下面的MSDN文章,它解釋它在深度
http://msdn.microsoft.com/en-us/library/ms972974.aspx
此外,在簡短的詞彙來重寫URL programarically調用HttpContext.RewritePath中的global.asax.cs從的Application_BeginRequest((字符串路徑))
這是一個非常糟糕的主意,因爲這意味着,可能有兩個或更多的網址可能指向一個頁面。史詩SEO自殺,不提你在實施這種情況下面臨的技術問題。我建議使用不同的方式傳遞變量 - 會話,cookie,隱藏字段,視圖狀態......特別是當你需要與這樣的變量玩弄時。 – walther
我知道你在說什麼。我只是想知道是否有可能使用url-rewriting + regular-expression而不是通過解析url來作爲下面的人。我沒有時間自己做,但我相信這將是可能的 – auser