2010-08-25 28 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的嘲笑会绕过这一点,但自己尝试过这种方法后,我找不到方法做它)。