我一直在MVC项目中工作过,并且已经看过这两个项目。我想知道他们之间的区别是什么?使用一个而不是另一个是不正确的吗?我的理解是我应该使用Url.Content(),但VirtualPathUtility.ToAbsolute()似乎也在使用。
答案 0 :(得分:7)
Url.Content()
是MVC的实用方法部分。我想在那里统一和集中实用程序类。
VirtualPathUtility.ToAbsolute()
是一种.NET Framework方法。也许MVC正在使用它,我们必须检查源...
希望帮助
答案 1 :(得分:1)
如果你在Controller中进行这种转换,那么我更喜欢VirtualParthUtility.ToAbsolute()而不是Url.Content()。
当您想要对控制器操作进行单元测试时,会带来好处。不是直接调用它,而是定义一个接口IPathUtilities,例如,一个实现使用VirtualPathUtility方法为实时站点,另一个使用某种模拟测试。
如果你直接调用VirtualPathUtility,那么你将无法测试动作方法(你可能认为HttpContext的一些聪明的嘲弄会绕过这个,但是我自己试过这个我找不到办法它)。