Поддержка времени разработки MVC MasterPage при работе в виртуальном каталоге - PullRequest
1 голос
/ 07 апреля 2009

Каков предпочтительный метод получения правильной поддержки времени разработки для мастер-страниц при запуске приложения MVC из виртуального каталога?

Например, с помощью следующего тега изображения на главной странице:

<img src="../../Content/Images/myimage.jpg" alt="image" />

Это обеспечит полную поддержку времени разработки на главных страницах и во всех представлениях, которые используют главную страницу, но при запуске приложения с http://localhost/MyApp/, изображение, конечно, не будет найдено (браузер ищет http://localhost/Content/Images/Banner.png).

Изменение изображения на:

<img src="<%=Url.Content("~/Content/Images/myimage.jpg")%>" alt="image" />

Исправит отображение времени выполнения, но нарушит поддержку времени разработки в главной странице и представлениях.

Третий вариант - изменить тег изображения на runat = server следующим образом:

<img runat="server" src="../../Content/Images/myimage.jpg" alt="image" />

Это работает как во время выполнения, так и во время разработки, но указание runat = "server" похоже на взлом.

Есть ли лучший способ справиться с этим?

Редактировать: опция, предлагаемая cagdas, будет работать во время разработки, но не во время выполнения:

<img src="/Content/Images/myimage.jpg" alt="image" />

Ответы [ 3 ]

1 голос
/ 08 апреля 2009

Вы можете объединить два способа, если вам нужна поддержка времени разработки, с ложным взломом if. Этот метод более хакерский, чем метод runat = "server", но в некоторых случаях он полезен. Я использую этот метод для intellisense класса css и для файлов vsdoc jQuery.

<% // design-time use only %>
<% if (false) { %>
<img src="../../Content/Images/myimage.jpg" alt="image" />
<% } %>
<% // run-time %>
<img src="<%=Url.Content("~/Content/Images/myimage.jpg")%>" alt="image" />
0 голосов
/ 07 апреля 2009

Я предпочитаю использовать ваш второй пример:

<img src="<%=Url.Content("~/Content/Images/myimage.jpg")%>" alt="image" />

.. но, как вы сказали, это не даст вам поддержки дизайна. Я бы сказал, что в среде MVC вы должны использовать конструктор VS. Я просто продолжаю работать на dev-сервере из VS и открываю свою страницу в моем любимом браузере рядом с VS - это лучше, чем представление проекта - это настоящий браузер.

Кроме того, вы не хотите жертвовать хорошей дизайнерской идеей использования метода Url.Content только для того, чтобы некоторые изображения появлялись в конструкторе. Поддержание последовательного подхода с использованием Url.Content повсюду принесет вам больше пользы в долгосрочной перспективе.

0 голосов
/ 07 апреля 2009

Если папка Content находится в корне приложения (и я предполагаю, что это так, поскольку это по умолчанию) Вы можете просто сделать это:

<img src="/Content/Images/myimage.jpg" alt="image" />

Который будет искать папку содержимого в корне приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...