Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net VirtualPath实用性.ToAbsolute()与Url.Content()的比较_Asp.net_Asp.net Mvc - Fatal编程技术网

Asp.net VirtualPath实用性.ToAbsolute()与Url.Content()的比较

Asp.net VirtualPath实用性.ToAbsolute()与Url.Content()的比较,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我一直在一个MVC项目中工作,并且看到了这两种方法的使用。我想知道他们之间的区别是什么?用一个代替另一个是不正确的吗?我的理解是,我应该使用Url.Content(),但VirtualPath实用性.ToAbsolute()似乎也可以使用。Url.Content()是MVC的一个实用方法部分。我想是为了统一和集中实用程序类 VirtualPathUtility.ToAbsolute()是一种.NET Framework方法。也许MVC正在使用它,我们必须检查源代码 如果您在控制器中进行此转换,那

我一直在一个MVC项目中工作,并且看到了这两种方法的使用。我想知道他们之间的区别是什么?用一个代替另一个是不正确的吗?我的理解是,我应该使用Url.Content(),但VirtualPath实用性.ToAbsolute()似乎也可以使用。

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

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


如果您在控制器中进行此转换,那么我更喜欢VirtualParthUtility.ToAbsolute()而不是Url.Content(),希望这能有所帮助

当您想要对控制器操作进行单元测试时,好处就来了。不过,我没有直接调用它,而是定义了一个接口iPatUtilities,比如说,一个实现使用了用于实时站点的VirtualPath方法,另一个实现在测试时使用了某种模拟


如果您直接调用VirtualPath实用性,那么您将无法测试action方法(您可能认为对HttpContext的一些巧妙的模仿可以解决这个问题,但我自己尝试了一下,却找不到方法)。

Url.Content()最终调用VirtualPath实用性,但它做的更多。我会编辑你的答案,但我需要发布一大堆代码感谢jfar的澄清!