gpt4 book ai didi

asp.net-mvc - 什么是 ASP 的 ContentPlaceHolder 的 Grails GSP 等价物?

转载 作者:行者123 更新时间:2023-12-02 00:29:53 26 4
gpt4 key购买 nike

我一直在研究 Grails GSP 中的模板/布局概念。我一直在使用布局/内容 block 来模仿 ASP 的母版页行为。

例如,我使用标签 <g:pageProperty />在模板中留下一个可以使用 <content> 覆盖的“占位符”标签:

我的模板.gsp:

<body>
<g:pageProperty name="page.topDiv" />
</body>


我的页面.gsp:

<html>
<head>
<meta name="layout" content="myTemplate"></meta>
</head>
<body>
<content tag="topDiv">
My top div
</content>
</body>
</html>

这非常适合将内容“附加”到模板中的某个位置。但是,我真的想要我可以在 ASP.NET 的母版页中获得的行为......即提供某些内容的“默认”呈现,并允许可选的覆盖。在 ASP.NET 母版页中,它看起来像这样:

我的Master.master:

<asp:ContentPlaceHolder id="something" runat="server">
<div>Default text/html here</div>
</asp:ContentPlaceHolder>


someOtherPage.aspx:

<asp:Content contentPlaceHolderId="something" runat="server">
Overriden content here!! I don't need to override this though :)
</asp:Content>


我的问题:
我可以在 Grails 的 GSP 中执行同样的默认/覆盖行为吗?

最佳答案

您可以在不同的几天内完成此任务。 g:pageProperty 等同于 Sitemesh decorator:getProperty 标签,因此您可以使用 default 属性来指示要使用的默认文本。例如:

<g:pageProperty name="page.topDiv" default="Default text/html here"/>

但是,我不知道有什么干净的方法可以将 HTML 内容放入其中。您可以使用 g:if 标记来测试该属性并指定默认行为(如果它不存在):

    <g:if test="${pageProperty(name:'page.topDiv')}">
<g:pageProperty name="page.topDiv"/>
</g:if>
<g:else>
<div>Default text/html here</div>
</g:else>

默认内容也可以存在于外部模板 gsp 中。然后可以使用 render 方法在 g:pageProperty 的默认属性中显示该内容:

<g:pageProperty name="page.topDiv" default="${render(template:'topDiv')}"/>

在这种情况下,默认内容将位于 _topDiv.gsp 中。

关于asp.net-mvc - 什么是 ASP 的 ContentPlaceHolder 的 Grails GSP 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com