W moich aplikacjach często muszę używać ścieżek względnych. Na przykład, kiedy odwołuję się do JQuery, zwykle robię to w ten sposób:
<script type="text/javascript" src="../Scripts/jquery-1.2.6.js"></script>
Teraz, gdy przechodzę do MVC, muszę wziąć pod uwagę różne ścieżki, które może mieć strona, względem katalogu głównego. Był to oczywiście problem z przepisywaniem adresów URL w przeszłości, ale udało mi się to obejść, używając spójnych ścieżek.
Zdaję sobie sprawę, że standardowym rozwiązaniem jest użycie ścieżek bezwzględnych takich jak:
<script type="text/javascript" src="/Scripts/jquery-1.2.6.js"></script>
ale to nie zadziała, ponieważ podczas cyklu programistycznego muszę wdrożyć na maszynie testowej, na której aplikacja będzie działać w katalogu wirtualnym. Względne ścieżki główne nie działają, gdy zmienia się katalog główny. Ponadto ze względów konserwacyjnych nie mogę po prostu zmienić wszystkich ścieżek na czas wdrażania testu - to byłby koszmar sam w sobie.
Więc jakie jest najlepsze rozwiązanie?
Edytować:
Ponieważ na to pytanie wciąż pojawiają się widoki i odpowiedzi, pomyślałem, że rozsądnie byłoby zaktualizować je, aby zauważyć, że od Razor V2 obsługa adresów URL powiązanych z rootem jest wbudowana, więc możesz użyć
<img src="~/Content/MyImage.jpg">
bez żadnej składni po stronie serwera, a mechanizm widoku automatycznie zamienia ~ / na dowolny bieżący katalog główny witryny.