2010-08-25 8 views
6

Ho lavorato in un progetto MVC e ho visto entrambi utilizzati. Mi stavo chiedendo quale sia la differenza tra loro? È scorretto usare l'uno sull'altro? La mia comprensione è che dovrei usare Url.Content(), ma VirtualPathUtility.ToAbsolute() sembra funzionare altrettanto bene.VirtualPathUtility.ToAbsolute() VS. Url.Content()

risposta

7

Url.Content() è una parte del metodo di utilità MVC. Essere lì per uniformare e centralizzare le classi di utilità credo.

VirtualPathUtility.ToAbsolute() è un metodo .NET Framework. Forse il MVC uno sta usando, avremmo dovuto controllare la fonte ...

Speranza l'aiuta

+2

Url.Content() alla fine chiama VirtualPathUtility ma fa ancora un po 'di più. Modificherei la tua risposta, ma avrei bisogno di inviare bucket pieni di codice. ;) – jfar

+0

Grazie per i chiarimenti jfar! –

1

Se si sta facendo questa conversione all'interno di un controllore, poi mi favore VirtualParthUtility.ToAbsolute() su Url.Content().

Il vantaggio arriva quando si desidera testare le azioni del controllore. Anziché chiamarlo direttamente, definire un'interfaccia IPathUtilities, ad esempio, con un'implementazione che utilizza i metodi VirtualPathUtility per il sito live e un'altra che utilizza una sorta di simulazione durante il test.

Se chiami VirtualPathUtility direttamente, non sarai in grado di testare il metodo di azione (potresti aver pensato che un furbo intelligente di HttpContext avrebbe aggirato questo problema, ma dopo averlo provato personalmente non sono riuscito a trovare un modo per fallo).

Problemi correlati