2010-08-25 75 views
6

我一直在MVC項目中工作,並已經看到這兩個使用。我想知道它們之間的區別是什麼?使用一個在另一個之上是不正確的?我的理解是我應該使用Url.Content(),但VirtualPathUtility.ToAbsolute()似乎也可以工作。VirtualPathUtility.ToAbsolute()VS. Url.Content()

回答

7

Url.Content()是MVC的實用方法部分。我猜想在那裏可以統一和集中工具類。

VirtualPathUtility.ToAbsolute()是一個.NET Framework方法。也許MVC人使用它,我們必須檢查源...

希望幫助

+2

Url.Content()最終調用VirtualPathUtility,但它確實有點多。我會編輯你的答案,但我需要發佈充滿代碼的存儲桶。 ;) – jfar 2010-08-25 16:05:28

+0

謝謝澄清jfar! – 2010-08-25 17:38:01

1

如果您在控制器內做這種轉換,然後我會贊成VirtualParthUtility.ToAbsolute()以上Url.Content()。

當您想要單元測試控制器操作時會帶來好處。我沒有直接調用它,而是定義了一個接口IPathUtilities,例如,一個使用VirtualPathUtility方法的實現,另一個在測試時使用某種模擬。

如果您直接調用VirtualPathUtility,那麼您將無法測試操作方法(您可能認爲某些HttpContext的嘲笑會繞過這一點,但自己嘗試過這種方法後,我找不到方法做它)。