Ich habe in einem MVC-Projekt gearbeitet, und habe gesehen, dass beide verwendet werden. Ich habe mich gefragt, was der Unterschied zwischen ihnen ist? Ist es falsch, das eine dem anderen vorzuziehen? Mein Verständnis ist, dass ich Url.Content() verwenden sollte, aber VirtualPathUtility.ToAbsolute() scheint zu arbeiten, als gut zu sein.
Antworten
Zu viele Anzeigen?Url.Content()
ist eine Utility-Methode, die Teil von MVC ist. Sie dient der Vereinheitlichung und Zentralisierung von Utility-Klassen, nehme ich an.
VirtualPathUtility.ToAbsolute()
ist eine .NET Framework-Methode. Vielleicht verwendet die MVC-Methode sie, wir müssten den Quellcode überprüfen...
Hoffentlich hilft das
Wenn Sie diese Umwandlung innerhalb eines Controllers vornehmen, würde ich VirtualParthUtility.ToAbsolute() gegenüber Url.Content() bevorzugen.
Dies ist von Vorteil, wenn Sie die Controller-Aktionen einem Unit-Test unterziehen wollen. Anstatt sie direkt aufzurufen, würde ich eine Schnittstelle IPathUtilities definieren, z.B. mit einer Implementierung, die VirtualPathUtility-Methoden für die Live-Site verwendet, und einer anderen, die eine Art von Mock beim Testen verwendet.
Wenn Sie VirtualPathUtility direkt aufrufen, dann werden Sie nicht in der Lage sein, die Action-Methode zu testen (Sie könnten gedacht haben, dass einige clevere Mocking von HttpContext dies umgehen würde, aber nachdem ich dies selbst versucht habe, konnte ich keine Möglichkeit finden, es zu tun).