2013-09-16 3 views
1

В моей странице макета, у меня есть:MVC/.NET Корневые URL-

<link href="~/Content/bootstrap.css" rel="stylesheet"> 

Я понимаю, что это не должно быть изменено, когда он отправляется клиенту. Тем не менее, когда я создал веб-сайт в качестве виртуального приложения под папку «MyApp» в IIS, то HTML является:

<link href="/myapp/Content/bootstrap.css" rel="stylesheet"> 

Я немного запутался, я думал, что нужно изменить эти URL-адреса в :

<link href="@Url.Content("~/Content/bootstrap.css")" rel="stylesheet"> 

для того, чтобы это работать правильно.

Так что мне нужно использовать URL.Content для получения правильного корневого URL-адреса приложения/веб-сайта, или я могу просто поместить тильды в фактические элементы HTML src + href и предположить, что он будет корректно выводиться IIS?

ответ

3

Начиная с версии ASP.NET MVC версии 4 (или фактически версии Razor версии 2) ссылки тильды по существу являются ярлыками до Url.Content(..).

+0

Отлично, спасибо. – Sean

-2

Вы действительно ответили на свой вопрос. Да, вы должны использовать Url.Content() для ваших относительных путей. Простая тильда перед относительными путями анализируется только в браузере клиента, который обрабатывает все URL-адреса под http://www.foo.com/ как один домен, поэтому попытается найти ресурсы по адресу http://www.foo.com/, а не http://www.foo.com/myapp/.

+1

«Простая тильда перед относительными путями анализируется только в браузере клиента»; Это не так, поскольку они оказываются Razor. –

+0

Проверьте его. Я нашел это так. –

+0

Вы нашли этот результат при тестировании в ASP.NET MVC 4 и Razor 2? Они должны быть визуализированы (т.е. не отображаются в визуализированном коде). –

Смежные вопросы