VirtualPathUtility.ToAbsolute()VS. Url.Content()

时间:2010-08-25 15:29:50

标签: asp.net asp.net-mvc

我一直在MVC项目中工作过,并且已经看过这两个项目。我想知道他们之间的区别是什么?使用一个而不是另一个是不正确的吗?我的理解是我应该使用Url.Content(),但VirtualPathUtility.ToAbsolute()似乎也在使用。

2 个答案:

答案 0 :(得分:7)

Url.Content()是MVC的实用方法部分。我想在那里统一和集中实用程序类。

VirtualPathUtility.ToAbsolute()是一种.NET Framework方法。也许MVC正在使用它,我们必须检查源...

希望帮助

答案 1 :(得分:1)

如果你在Controller中进行这种转换,那么我更喜欢VirtualParthUtility.ToAbsolute()而不是Url.Content()。

当您想要对控制器操作进行单元测试时,会带来好处。不是直接调用它,而是定义一个接口IPathUtilities,例如,一个实现使用VirtualPathUtility方法为实时站点,另一个使用某种模拟测试。

如果你直接调用VirtualPathUtility,那么你将无法测试动作方法(你可能认为HttpContext的一些聪明的嘲弄会绕过这个,但是我自己试过这个我找不到办法它)。