W .NET MVC4
projekcie robi, jak @Styles.Render
działa?
Mam na myśli, w @Styles.Render("~/Content/css")
którym pliku się woła?
Nie mam w folderze pliku ani folderu o nazwie „css” Content
.
W .NET MVC4
projekcie robi, jak @Styles.Render
działa?
Mam na myśli, w @Styles.Render("~/Content/css")
którym pliku się woła?
Nie mam w folderze pliku ani folderu o nazwie „css” Content
.
Odpowiedzi:
Wywołuje pliki zawarte w tym konkretnym pakiecie, który jest zadeklarowany w BundleConfig
klasie w App_Start
folderze.
W tym konkretnym przypadku Wywołanie @Styles.Render("~/Content/css")
to „~ / Content / site.css”.
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
ponad *.*
plików.
Uważaj na rozróżnianie wielkości liter. Jeśli masz plik
/Content/bootstrap.css
i przekierowujesz w pliku Bundle.config na
.Include („~ / Content / Bootstrap.css”)
nie załaduje css.
Trochę późno na imprezę. Ale wydaje się, że nikt nie wspomniał
pakowanie w wiązki i minifikacji o StyleBundle
tak ..
@Styles.Render("~/Content/css")
wzywa Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
który z kolei wzywa
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
skutecznie łączy i minimalizuje bootstrap.css
oraz Site.css
w jeden plik,
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
Ale ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
tylko gdy debug
jest ustawiony na false
in Web.config
.
Inaczej bootstrap.css
i Site.css
będą podawane indywidualnie.
Nie w pakiecie ani nie zminimalizowane:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
Jak zdefiniowano w App_start.BundleConfig, to tylko wywołanie
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
Nic się nie dzieje, nawet jeśli usuniesz tę sekcję.
Polo Nie używałbym pakietów w MVC z wielu powodów. To nie działa w twoim przypadku, ponieważ musisz skonfigurować niestandardową klasę BundleConfig w folderze Apps_Start. Nie ma to sensu, gdy możesz po prostu dodać styl w nagłówku HTML:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
Możesz także dodać je do Layout.cshtml lub częściowej klasy, która jest wywoływana ze wszystkich twoich widoków i upuszczana na każdej stronie. Jeśli zmienią się twoje style, możesz łatwo zmienić nazwę i ścieżkę bez konieczności ponownej kompilacji.
Dodanie zakodowanych linków do CSS w klasie psuje również cały cel oddzielenia interfejsu użytkownika i projektu od modelu aplikacji. Nie chcesz też zarządzać ścieżkami arkusza stylów zakodowanych na sztywno w języku C #, ponieważ nie możesz już budować „skór” lub oddzielnych modeli stylów dla, powiedzmy, różnych urządzeń, motywów itp.
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
Korzystając z tego systemu i Razor, możesz teraz wyłączyć Ścieżkę skórki z bazy danych lub ustawień użytkownika i zmienić cały projekt swojej witryny, zmieniając dynamicznie ścieżkę.
Celem CSS 15 lat temu było opracowanie „skórek” arkusza stylów kontrolowanych przez użytkownika i kontrolowanych przez aplikacje dla witryn, aby można było zmienić wygląd interfejsu użytkownika i poczuć się oddzielny od aplikacji oraz zmienić przeznaczenie treści niezależnie od struktury danych. .... na przykład wersja do wydruku, wersja mobilna, wersja audio, nieprzetworzony plik XML itp.
Wracając teraz do tego „staromodnego”, zakodowanego na stałe systemu ścieżek, wykorzystującego klasy C #, sztywne style, takie jak Bootstrap, i łącząc motywy witryn z kodem aplikacji, cofnęliśmy się do tego, jak strony internetowe zostały zbudowane w 1998 roku.
minification
tym? : s / :(
Zrobiłem wszystko, co konieczne, aby dodać pakietowanie do sieci MVC 3 (jestem nowy w istniejącym rozwiązaniu). Styles.Render
nie działało dla mnie. W końcu odkryłem, że po prostu brakuje mi jelita grubego. Na stronie wzorcowej: <%: Styles.Render("~/Content/Css") %>
Nadal jestem zdezorientowany, dlaczego (na tej samej stronie) <% Html.RenderPartial("LogOnUserControl"); %>
działa bez dwukropka.