我正在为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