2010-08-25 10 views
6

He estado trabajando en un proyecto de MVC, y he visto utilizar estos dos. Me preguntaba ¿cuál es la diferencia entre ellos? ¿Es incorrecto usar uno sobre el otro? Tengo entendido que debería usar Url.Content(), pero VirtualPathUtility.ToAbsolute() parece estar funcionando también.VirtualPathUtility.ToAbsolute() VS. Url.Content()

Respuesta

7

Url.Content() es un método de utilidad que forma parte de MVC. Estar allí para uniformizar y centralizar las clases de utilidad, supongo.

VirtualPathUtility.ToAbsolute() es un método .NET Framework. Tal vez el MVC lo está utilizando, tendríamos que comprobar la fuente ...

Esperamos que la ayuda

+2

Url.Content() eventualmente llama VirtualPathUtility pero hace bastante más. Editaría tu respuesta, pero necesitaría publicar cubos llenos de código. ;) – jfar

+0

Gracias por aclaraciones jfar! –

1

Si usted está haciendo esta conversión dentro de un controlador, entonces me favorecen VirtualParthUtility.ToAbsolute() a lo largo Url.Content().

El beneficio viene cuando desea probar las acciones del controlador. Sin embargo, en lugar de llamarlo directamente, definiría una interfaz IPathUtilities, por ejemplo, con una implementación usando métodos VirtualPathUtility para el sitio en vivo, y otra usando algún tipo de simulacro al realizar la prueba.

Si llamas a VirtualPathUtility directamente, entonces no podrás probar el método de acción (podrías haber pensado que una burla inteligente de HttpContext lo sostendría, pero habiendo intentado esto yo mismo no pude encontrar una manera de hazlo).

Cuestiones relacionadas