我可能是疯了,但是母版页让我害怕,因为我害怕一旦我被锁定在使用母版页,我会遇到一种情况,我将只想继承母版页的90%的可视内容,迫使我打破继承,从而不得不重新生成母版页中的内容并将其带入子级。
我感觉这是任何一种“继承”的问题,因为你必须小心,但似乎至少你可以覆盖常规类中的方法。
我在这里可能不太连贯,但是用户控件似乎给了你更多的灵活性。唯一的缺点是你必须把它们拖到一个them表单上。对于这一点,我认为这是个大问题。
将我的应用程序从使用用户控件转换为母版页让我感到害怕,我担心我的Javascript会崩溃。
评论?
发布于 2009-11-26 05:10:11
别害怕。
您可以创建任意数量的占位符,使您的母版页非常细粒度。这些占位符还可以包含默认内容和控件。
因此,在您想要默认标记的90%的页面中,您可以省略覆盖内容。
或者,在10%的情况下,如果您想要一些不同的东西,您可以提供覆盖标记
示例:
<%@ Master Language="C#" %>
<html>
<body>
<asp:ContentPlaceholder id="Headline" runat="Server">
My Default Headline
</asp:ContentPlaceholder>
<asp:ContentPlaceholder id="Main" runat="Server" />
</body>
</html>在你的主页上,你可以有一个这样的页面:
<%@ Page MasterPageFile="..." %>
<asp:Content ContentPlaceHolderID="Headline" runat="Server">
My homepage headline
</asp:Content>
<asp:Content contentplaceholderid="Main" runat="server">
My homepage main content
</asp:Content>在所有其他页面上,通过省略标题的标记来利用默认的“headline”,如下所示:
<%@ Page MasterPageFile="..." %>
<asp:Content contentplaceholderid="Main" runat="server">
My page main content
</asp:Content>发布于 2009-11-26 04:59:46
我不会考虑不使用母版页。如果你想在大多数页面上共享最外面的chrome,在竖井中共享内部chrome等等,你总是可以嵌套母版页。
发布于 2009-11-26 04:59:11
正如您所提到的,继承问题可能出现在任何地方。不要过早地过度设计。
有了你描述的母版页问题,你可以换入/换出不同的css文件,并使用选择器隐藏/更改从母版页生成的html的一部分。
https://stackoverflow.com/questions/1799886
复制相似问题