Как включить css файлы из частичного управления MVC?

Я использую ASP.NET MVC, и у меня есть частичный элемент управления, которому нужен конкретный файл CSS и JS. Есть ли способ сделать родительскую страницу визуализацией тегов script и link в разделе "head" на странице, а не просто сделать их встроенными в частичный contol?

Чтобы прояснить элемент управления, который я хочу включить в файлы, отображается из представления с помощью Html.RenderPartial и поэтому не может содержать на нем элементы управления на стороне сервера. Я хочу включить файлы в раздел html head, чтобы избежать ошибок проверки.

Ответы

Ответ 2

Если у меня есть требования к CSS/Javascript в частичном представлении, я просто убеждаюсь, что любая страница, которая может включать частичное представление, прямо или как содержимое, полученное из AJAX, содержит CSS/Javascript, включенные в его заголовки. Если страница имеет главную страницу, я добавляю заполнитель содержимого в заголовок главной страницы и заполняю его на дочерней странице. Чтобы получить intellisense в частичном представлении, я добавляю, что CSS/Javascript включает в частичное представление, но завернутый блоком кода if (false), поэтому они не включены во время выполнения.

<% if (false) { %>
   <link href=...
   <script type=...
<% } %>

Ответ 3

Перед частичной линией рендеринга вызовите @import следующим образом:

<style type="text/css>
    @import url(cssPath.css);
</style>

Надеюсь, что это поможет.


Просто наткнулся на эту опцию на Haacked и вспомнил ваш вопрос. Используйте заголовок Content placeholder на частичном представлении и просто добавьте CSS в эту форму как обычно.

Ответ 4

Если вы готовы нарушить соответствие, вы можете просто исправить определение стиля с частичным контентом. Это работает в большинстве браузеров.

Ответ 5

В зависимости от того, сколько CSS/JS вам нужно для управления, самым безопасным маршрутом может быть просто включение дополнительного стиля в ваши основные файлы CSS. Сохраняет дополнительную поездку на сервер, и все должно быть кэшировано клиентом. Я знаю, что это убивает самодостаточность (монета фразы) контроля, но это может быть вашим лучшим выбором.

Ответ 6

Извините, вы не можете от частичного контроля ссылаться "вверх" на что-то на родительской странице (или добавить что-нибудь). Единственное сообщение "вниз" от родителя к частичному, передавая ViewData/Model.

Вы описываете функциональные возможности главной страницы и обычной страницы с использованием держателей содержимого, но частичные элементы управления не работают так.

Но, если я не ошибаюсь, вы можете просто физически добавить теги script или ссылку на фактическую родительскую страницу, на которую вы показываете частичную страницу, - CSS должен также использоваться на частичной странице.

Ответ 7

Тодд-ответ работает отлично, если у вас есть только один экземпляр элемента управления, и нет другого кода, который хочет "ввести" что-либо в тег для главной страницы. К сожалению, вы редко можете полагаться на это.

Я бы предложил вам включить все необходимые файлы css на главной странице. В первом посещении будет небольшой перфоманс, но после этого будет активировано кэширование браузера. Вы можете (и должны) разделить свои стили в нескольких файлах .css, чтобы извлечь выгоду из агентов HTTP, которые могут их загрузить. Что касается файлов .js, я бы предложил реализовать что-то близкое к механизму google.load(), что позволит вам загружать скрипты по запросу.

Ответ 8

Я новичок в MVC... Недавно у меня была проблема. Я использовал страницу просмотра MVC вместо частичного представления, добавил свою собственную главную страницу (потому что у меня есть css, который разделен на несколько просмотров) и добавлен css для управления. Надеюсь, эта информация поможет.

Ответ 9

Включите держатель места в шаблоне мастера:

<head runat="server>
    <asp:ContentPlaceHolder ID="head" runat="server" />
</head>

и в вашем управлении

<asp:Content ID="head" runat="server">
    <script src="something.js"></script>
</asp:Content>