Стили.Рендеринг в MVC4



на Как @Styles.Render работает?



Я имею в виду, в @Styles.Render("~/Content/css") какой файл он вызывает?



у меня нет файла или папки под названием "css" внутри моего .

610   7  

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">

src="@url.content("~/Folderpath/*.css")" должен отображать стили

Как определено в 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

    Ничего не найдено.