Tôi đang làm việc trên thư viện tài nguyên tổng hợp thời gian chạy cho ASP.NET WebForms/MVC. Tôi hỗ trợ cả ASP.NET WebForms tiêu chuẩn thông qua WebControls và gần đây cũng đã thêm hỗ trợ cho ASP MVC Html Helpers. Một tính năng mà tôi hiện đang hỗ trợ với WebForms WebControls là khái niệm về các định nghĩa tài nguyên "Một phần" trong đó tài nguyên có thể được kết hợp trên các trang Cái/Xem, v.v.Trợ giúp với ASP.NET MVC Thiết kế API HtmlHelper
Khi thực hiện tương đương MVC, tôi không chắc chắn thực hành là gì? Tôi hiện đang nghiêng về phía một cái gì đó thiết kế như:
Master Page
<% using (Html.CreateCompositeResourcePartContext())
{
Html.CompositeCssResourcePart(
"ResourceName",
new[] { "/Styles/SharedStyle1.css", "/Styles/SharedStyle2.css" }
);
%>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
<% } %>
nào sẽ tạo ra một "bối cảnh" wrapper xung quanh đầu ContentPlaceHolder.
Xem trang
<asp:Content ID="HeadContentPlaceholder" ContentPlaceHolderID="head" runat="server">
<% Html.CompositeCssResourcePart(
"ResourceName",
new[]
{
"/Styles/PageStyle5.css",
"/Styles/PageStyle6.css",
"/Styles/PageStyle7.css"
}) %>
</asp:Content>
Vì vậy, bất kỳ trang nào xem có thể mở rộng định nghĩa tài nguyên phần như đã thấy ở trên.
Các câu hỏi tôi có:
1) Không giống như tất cả HtmlHelpers khác của tôi, các phần mở rộng không ngay lập tức viết ra các đoạn HTML mà đúng hơn là chờ đợi cho đến bối cảnh được xử lý. Các phần mở rộng này có nên tắt ViewContext thay vì (hoặc một số đối tượng khác) không?
2) Cá nhân tôi nghĩ khái niệm "sử dụng" có ý nghĩa để bao bọc một khối mã thay vì các cuộc gọi BeginCompositeResourcePartContext/EndCompositeResourcePartContext riêng biệt, bạn có đồng ý không? Nếu không, điều gì tốt hơn về các cuộc gọi phương thức riêng biệt?
Mọi phản hồi ở trên sẽ được đánh giá cao. Nếu cần thêm chi tiết, vui lòng cho tôi biết.
Sửa
... Để làm rõ khối bên trong đầu của trang Master và tài liệu tham khảo sau này ở bên một trang xem sẽ được kết hợp với nhau vào một nguồn duy nhất. Vì vậy, khi bối cảnh CompositeResourcePartContext được xử lý, tất cả SÁU tập tin được kết hợp trong chỉ ONE tập tin css và viết ra như một liên kết TAG đơn (hoặc kịch bản, css sprite vv)
<link rel="stylesheet" type="text/css" href="/MyMergedStyleSheet.css" />
Tôi không chắc người trợ giúp này mua gì cho bạn. Đó không phải là những gì mà trình giữ chỗ nội dung dành cho vị trí đầu tiên? –
@ John - Ý tưởng là mỗi cuộc gọi đến Html.CompositeCssResourcePart sẽ xác định một phần của tài nguyên tổng hợp (ví dụ:, sẽ được hợp nhất với nhau thành một tệp duy nhất khi ngữ cảnh được xử lý). Vì vậy, tôi cần một phương thức thu thập tất cả các phần trước khi thẻ liên kết/tập lệnh có thể được hiển thị khi URL được tạo ra từ tất cả các tài nguyên được tham chiếu. Có ý nghĩa? –
'using' có ý nghĩa trong ngữ cảnh này, nhưng tôi không thể bình luận vượt quá điều đó. –