Trong một .NET MVC4
dự án làm thế nào để @Styles.Render
làm việc?
Ý tôi là, @Styles.Render("~/Content/css")
nó đang gọi tập tin nào?
Tôi không có tệp hoặc thư mục có tên "css" trong Content
thư mục của mình .
Trong một .NET MVC4
dự án làm thế nào để @Styles.Render
làm việc?
Ý tôi là, @Styles.Render("~/Content/css")
nó đang gọi tập tin nào?
Tôi không có tệp hoặc thư mục có tên "css" trong Content
thư mục của mình .
Câu trả lời:
Nó đang gọi các tệp có trong gói cụ thể được khai báo bên trong BundleConfig
lớp trong App_Start
thư mục.
Trong trường hợp cụ thể đó, cuộc gọi đến @Styles.Render("~/Content/css")
đang gọi "~ / Content / site.css".
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
quản *.*
các tệp.
Xem ra cho trường hợp nhạy cảm. Nếu bạn có một tập tin
/Content/bootstrap.css
và bạn chuyển hướng trong Bundle.config sang
.Incoide ("~ / Nội dung / Bootstrap.css")
Nó sẽ không tải css.
Một chút muộn để dự tiệc. Nhưng nó có vẻ như không ai có đề cập
bó & việc rút gọn của StyleBundle
, vì vậy ..
@Styles.Render("~/Content/css")
gọi trong Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
đến lượt nó gọi
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
hiệu quả liên hợp gặt đập & minifies bootstrap.css
& Site.css
thành một file duy nhất,
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
Nhưng ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
chỉ khi debug
được đặt thành false
trong Web.config
.
Nếu không bootstrap.css
& Site.css
sẽ được phục vụ riêng.
Không bó, cũng không rút gọn:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
Như được định nghĩa trong App_start.BundleConfig, nó chỉ gọi
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
Không có gì xảy ra ngay cả khi bạn loại bỏ phần đó.
Polo Tôi sẽ không sử dụng Gói trong MVC vì nhiều lý do. Nó không hoạt động trong trường hợp của bạn vì bạn phải thiết lập lớp BundleConfig tùy chỉnh trong thư mục Apps_Start. Điều này vô nghĩa khi bạn có thể đơn giản thêm một kiểu vào đầu html của mình như vậy:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
Bạn cũng có thể thêm những thứ này vào một lớp Layout.cshtml hoặc một phần lớp được gọi từ tất cả các lượt xem của bạn và thả vào từng trang. Nếu phong cách của bạn thay đổi, bạn có thể dễ dàng thay đổi tên và đường dẫn mà không cần phải biên dịch lại.
Việc thêm các liên kết được mã hóa cứng vào CSS trong một lớp phá vỡ với toàn bộ mục đích tách giao diện người dùng và thiết kế khỏi mô hình ứng dụng. Bạn cũng không muốn các đường dẫn biểu định kiểu được mã hóa cứng được quản lý trong c # vì bạn không còn có thể tạo "giao diện" hoặc các mô hình kiểu riêng biệt để nói các thiết bị, chủ đề khác nhau, v.v.
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
Sử dụng hệ thống này và Dao cạo giờ đây bạn có thể tắt Đường dẫn da từ cơ sở dữ liệu hoặc cài đặt người dùng và thay đổi toàn bộ thiết kế trang web của bạn bằng cách thay đổi đường dẫn một cách linh hoạt.
Toàn bộ mục đích của CSS 15 năm trước là phát triển cả "giao diện" được điều khiển bởi ứng dụng và kiểm soát ứng dụng cho các trang web để bạn có thể chuyển giao diện UI và cảm nhận tách biệt khỏi ứng dụng và sử dụng lại nội dung độc lập với cấu trúc dữ liệu. .... ví dụ: phiên bản có thể in, thiết bị di động, phiên bản âm thanh, xml thô, v.v.
Bằng cách quay trở lại hệ thống đường dẫn mã hóa "lỗi thời" này bằng cách sử dụng các lớp C #, các kiểu cứng nhắc như Bootstrap và hợp nhất các chủ đề của các trang web với mã ứng dụng, chúng tôi đã quay trở lại cách các trang web được xây dựng vào năm 1998.
minification
sau đó? : s / :(
Tôi đã làm tất cả những điều cần thiết để thêm gói vào web MVC 3 (Tôi mới sử dụng giải pháp hiện có). Styles.Render
không làm việc cho tôi. Cuối cùng tôi phát hiện ra tôi chỉ đơn giản là thiếu một dấu hai chấm. Trong trang chính: <%: Styles.Render("~/Content/Css") %>
Tôi vẫn bối rối về lý do tại sao (trên cùng một trang) <% Html.RenderPartial("LogOnUserControl"); %>
hoạt động mà không có dấu hai chấm.