我正在爲ASP.NET WebForms/MVC運行時組合資源庫。我通過WebControl支持標準的ASP.NET WebForms,並且最近還增加了對ASP MVC Html Helpers的支持。我目前支持WebForms WebControl的一個功能是「部分」資源定義的概念,其中資源可以通過主/視圖頁面進行組合。幫助ASP.NET MVC HtmlHelper API設計
當實現MVC等效項時,我不確定什麼是最好的練習是?我目前傾向於設計是這樣的:
母版頁
<% using (Html.CreateCompositeResourcePartContext())
{
Html.CompositeCssResourcePart(
"ResourceName",
new[] { "/Styles/SharedStyle1.css", "/Styles/SharedStyle2.css" }
);
%>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
<% } %>
,這將創造頭部周圍的ContentPlaceHolder「上下文」包裝。
查看頁面
<asp:Content ID="HeadContentPlaceholder" ContentPlaceHolderID="head" runat="server">
<% Html.CompositeCssResourcePart(
"ResourceName",
new[]
{
"/Styles/PageStyle5.css",
"/Styles/PageStyle6.css",
"/Styles/PageStyle7.css"
}) %>
</asp:Content>
所以從上面可以看出任何視圖頁面可以延長部分資源定義。
的問題,我有:
1)我不像其他HtmlHelpers,這些擴展不要馬上寫出來的HTML片段,而是等到情境佈置。這些擴展是否應該取代ViewContext(或其他對象)?
2)我個人認爲「使用」的概念是有意義的,可以包裝一段代碼而不是單獨的BeginCompositeResourcePartContext/EndCompositeResourcePartContext調用,你會同意嗎?如果不是,那麼單獨的方法調用有什麼更好的?
以上任何反饋將不勝感激。如果需要更多細節,請告訴我。
編輯
爲了澄清...主頁的頭部和在側相繼的基準內的塊的圖頁將被一起組合在單個資源。因此,當CompositeResourcePartContext的環境佈置,所有六個文件組合成只有一個CSS文件,並寫出來作爲單獨的鏈接TAG(或腳本,CSS雪碧等)
<link rel="stylesheet" type="text/css" href="/MyMergedStyleSheet.css" />
我不確定這個幫手會給你買什麼。首先,這不是佔位符的內容嗎? – 2010-11-02 13:04:55
@John - 這個想法是,每次調用Html.CompositeCssResourcePart都會定義一個複合資源的一部分(即,當上下文被處理時,將會合併到一個文件中)。因此,我需要一種收集所有零件的方法,因爲在引用的所有資源中生成URL時,可以呈現鏈接/腳本標記。說得通? – 2010-11-02 13:08:43
'使用'在這種情況下是有意義的,但除此之外,我無法評論。 – 2010-11-02 13:17:55