7 ответов:
Он зовет файлы, включенные в этот конкретный пакет, который объявлен внутри
BundleConfigкласс .в этом конкретном случае вызов
@Styles.Render("~/Content/css")вызывает " ~ / Content / site.стиль CSS."bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
следите за чувствительностью к регистру. Если у вас есть файл
/ Content / bootstrap.css
и вы перенаправляете в свой пакет.config to
.Включить ("~/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()эффективно сочетает в себе & minifiesbootstrap.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 я бы не использовал пакеты в MVC по нескольким причинам. Это не работает в вашем случае, потому что вам нужно настроить пользовательский класс BundleConfig в папке Apps_Start. Это не имеет смысла, когда вы можете просто добавить стиль в голову вашего html, например:
<link rel="stylesheet" href="~/Content/bootstrap.css" /> <link rel="stylesheet" href="~/Content/bootstrap.theme.css" />вы также можете добавить их в макет.cshtml или частичный класс, который вызывается из всех ваших представлений и помещается на каждую страницу. Если ваши стили меняются, вы можете легко изменить имя и путь без необходимости перекомпилировать.
добавление жестко закодированных ссылок на CSS в классе разрывается со всей целью отделения пользовательского интерфейса и дизайна от модели приложения, а также. Вы также не хотите, чтобы жестко закодированные пути таблицы стилей управлялись в c#, потому что вы больше не можете создавать "скины" или отдельные модели стилей для разных устройств, тем и т. д. вот так:
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" /> <link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />С помощью этой системы и бритвы теперь вы можете переключить путь кожи из базы данных или настройки пользователя и изменить весь дизайн вашего сайта, просто изменяя путь динамически.
вся цель CSS 15 лет назад состояла в том, чтобы разработать как управляемые пользователем, так и управляемые приложением таблицы стилей "скины" для сайтов, чтобы вы могли переключать внешний вид пользовательского интерфейса отдельно от приложения и перепрофилировать контент независимо от структуры данных.....например, версия для печати, мобильная, аудиоверсия, raw xml и т. д.
возвращаясь теперь к этому "старомодному", жестко закодированному пути система, использующая классы C#, жесткие стили, такие как Bootstrap, и объединение тем сайтов с кодом приложения, мы снова вернулись к тому, как веб-сайты были построены в 1998 году.
Я сделал все необходимое, чтобы добавить пакетирование в MVC 3 web (я новичок в существующем решении).
Styles.Renderне работает для меня. Наконец я обнаружил, что у меня просто отсутствует двоеточие. На главной странице:<%: Styles.Render("~/Content/Css") %>Я все еще не понимаю, почему (на той же странице)<% Html.RenderPartial("LogOnUserControl"); %>работает без двоеточие.
Comments