2010-08-25 3 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

+0

Спасибо за разъяснения jfar! –

1

Если вы делаете это преобразование в контроллере, то я бы благоприятствовать VirtualParthUtility.ToAbsolute() над Url.Content().

Выгода заключается в том, что вы хотите, чтобы модуль тестировал действия контроллера. Вместо того, чтобы называть это напрямую, я бы определил интерфейс IPathUtilities, скажем, с одной реализацией, используя методы VirtualPathUtility для сайта в реальном времени, а другой использовал какой-то макет при тестировании.

Если вы вызываете VirtualPathUtility напрямую, то вы не сможете протестировать метод действия (возможно, вы подумали, что какое-то умное издевательство над HttpContext обойдет это, но, попробовав это, я не смог найти способ сделай это).

Смежные вопросы