В .NET MVC4
проекте как @Styles.Render
работает?
Я имею в виду, в @Styles.Render("~/Content/css")
каком файле это вызывает?
У меня нет файла или папки с именем «css» внутри моей Content
папки.
В .NET MVC4
проекте как @Styles.Render
работает?
Я имею в виду, в @Styles.Render("~/Content/css")
каком файле это вызывает?
У меня нет файла или папки с именем «css» внутри моей Content
папки.
Ответы:
Он вызывает файлы, включенные в этот конкретный пакет, который объявлен внутри BundleConfig
класса в App_Start
папке.
В этом конкретном случае вызов @Styles.Render("~/Content/css")
вызывает "~ / Content / site.css".
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
более *.*
файлы.
Следите за чувствительностью к регистру. Если у вас есть файл
/Content/bootstrap.css
и вы перенаправляете в свой Bundle.config на
.INCLUDE ( "~ / Content / Bootstrap.css")
это не будет загружать CSS.
Немного опоздал на вечеринку. Но, похоже , никто не обмолвился
пакетирование & минификация из StyleBundle
, так что ..
@Styles.Render("~/Content/css")
звонки в Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
который в свою очередь вызывает
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
эффективно объединяет и минимизирует bootstrap.css
& Site.css
в один файл,
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
Но ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
только когда debug
установлено false
в Web.config
.
В противном случае bootstrap.css
& Site.css
будет обслуживаться индивидуально.
Не в комплекте и не минимизировано:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
Как определено в App_start.BundleConfig, это просто вызов
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
Ничего не происходит, даже если вы удалите этот раздел.
Polo Я бы не использовал Bundles в MVC по нескольким причинам. Это не работает в вашем случае, потому что вы должны настроить пользовательский класс BundleConfig в вашей папке Apps_Start. Это не имеет смысла, когда вы можете просто добавить стиль в заголовок вашего HTML, например так:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
Вы также можете добавить их в класс Layout.cshtml или частичный класс, который вызывается из всех ваших представлений и помещается на каждую страницу. Если ваши стили меняются, вы можете легко изменить имя и путь без перекомпиляции.
Добавление жестко закодированных ссылок на CSS в класс нарушает целиком отделение интерфейса и дизайна от модели приложения. Вам также не нужны жестко запрограммированные пути таблиц стилей, управляемые в c #, потому что вы больше не можете создавать «скины» или отдельные модели стилей, например, для различных устройств, тем и т. Д., Например:
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
Используя эту систему и Razor, вы можете теперь отключить путь к скину из базы данных или настройки пользователя и изменить весь дизайн вашего сайта, просто динамически изменяя путь.
Основная цель CSS 15 лет назад состояла в том, чтобы разработать «скины» для сайтов, управляемые как пользователем, так и приложением, для того, чтобы вы могли отключить внешний вид и ощущение пользовательского интерфейса от приложения и переназначить контент независимо от структуры данных. .... например, версия для печати, мобильная, аудио версия, сырой XML и т. д.
Вернувшись теперь к этой «старомодной», жестко запрограммированной системе путей, использующей классы C #, жесткие стили, такие как Bootstrap, и объединяя темы сайтов с кодом приложения, мы снова вернулись к тому, как создавались сайты в 1998 году.
minification
тогда? : s / :(
Я сделал все, что нужно, чтобы добавить связывание в сеть MVC 3 (я новичок в существующем решении). Styles.Render
не работал для меня Я наконец обнаружил, что просто пропустил двоеточие. На главной странице: <%: Styles.Render("~/Content/Css") %>
я все еще не понимаю, почему (на той же странице) <% Html.RenderPartial("LogOnUserControl"); %>
работает без двоеточия.