2014-06-20 39 views
0

我正在尋找一種方式,通過調用UrlHelperControl.ResolveUrl()上的許多方法調用生成的URL,這種方式對開發人員來說是完全透明的。ASP.NET是否有一個擴展點,通過它可以傳遞所有URL生成代碼?

主要的情況是添加一個語言'標記'的網址。開發人員像往常一樣創建一個鏈接到一個動作或一個ASPX頁面,但是URL生成被「攔截」以使鏈接「語言意識」可以這麼說。我不希望看到這個橫切關注'泄漏'到代碼中。 (當用戶點擊鏈接時,URL中的語言標記被解釋,並且請求被重寫,所以它正常工作)。

ASP.NET是否具有所需的擴展點來執行此操作?換句話說:什麼樣的類我可以註冊(我在哪裏註冊),這是總是在URL生成時調用的?

源代碼粗略地看一眼在aspnetwebstack.codeplex.com表明ASP.NET最終依靠VirtualPathUtility類,但不像VirtualPathProvider(用於解析傳入的URL到磁盤上的文件),它不能被執行(這是一個靜態類) 。

+0

您也可以不更改URL,但更改_interpreted_的方式。 –

+0

@JohnSaunders你能詳細說明一下嗎? –

+0

不是我最喜歡的處理網址的方式,但看看:http://www.iis.net/downloads/microsoft/url-rewrite。這發生在IIS級別。否則,您正在尋找的課程是您不想用於W/E原因的課程,也就是路由。我建議通過url重寫進行路由,但它更容易管理,但如果你想要一個快速的一次性使用url重寫。 – RandomUs1r

回答

0

它的討厭,但你可以註冊一個http模塊,其中greps /字符串用你需要的替換你的URL中的URL。這將涉及到使用一系列正則表達式來獲取所發佈的html並將其與您需要的內容交換出來,如果您可以在URL中佔據一個佔位符,那麼這將更容易。

除了寫你自己的定製方法,然後找到並替換他們的同行不會太繁重。

也許,如果你可以標記出你想要做你的更換方法,並能得到實例數據進去(不知道這是一個起動器)

或者有關自定義屬性如何,它甚至可以AOP可能是有用的在頁面上枚舉並讓頁面實例傳入以獲得更好的粒度控制(類似於域對象驗證器可能的工作方式),從而可以訪問和操縱控制違規URL的控件。

+0

是啊,我真的尋找一種方法來'只'使用諸如UrlHelper.Action()之類的東西,並讓它返回帶有附加語言標籤的URL。 –

相關問題