我开始在DNN中处理主题,并且我已经设置了三个文件ASCX文件,这些文件将从数据库中组装内容。
我有一个包含这样的ContentPane的主模板。
<main role="main" class="main-body main-template-main-body">
<div id="ContentPane" class="content-pane" runat="server"</div>
</main>
然后,我有另一个由该ContentPane拉出的容器。
<div class='container'>
<div class='col-3'>
<div id ="carddeck" class="carddeck" runat="server" ></div>
</div></div>
最后,我还有另一个文件可以从服务器提取数据。
<div class="card h-80" style="height: 18rem;">
<div class="card-body">
<h3 class="card-title"><%# Eval("Name")%></h3>
<p class="card-text"><%# Eval("description")%></p>
</div>
</div>
具有这种结构。我当时想我可以通过数据库中的所有条目“循环”第三个代码块。在这一点上,我没有这个工作,我认为它与使第二个和第三个代码块更具动态性有关。有什么帮助吗?先感谢您。
答案 0 :(得分:1)
通常通过放置在页面上而不是皮肤本身中的模块来完成此操作。
话说回来,皮肤/主题文件是ASCX用户控件,因此您可以根据需要使用代码处理它们。
像asp:repeater之类的东西可能效果最好
<asp:Repeater ID="rptSomething" runat="server">
<ItemTemplate>
<div class="card h-80" style="height: 18rem;">
<div class="card-body">
<h3 class="card-title"><%# Eval("Name")%></h3>
<p class="card-text"><%# Eval("description")%></p>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
然后在ASCX(ascx.cs)文件的代码背后,您可以加载数据源并将其绑定到转发器控件。
答案 1 :(得分:1)
您可以使用DNN提供的模块的概念。您可以在皮肤中添加一个内容窗格,并且可以将模块添加到页面中。您只需编写ascx文件中提供的代码,然后单击给定内容窗格中的“添加模块”选项即可将模块添加到页面中。
<main role="main" class="main-body main-template-main-body">
<div id="ContentPane" class="content-pane" runat="server"</div>
</main>
您可以将其他所有内容添加到要创建自定义模块的创建的不同项目中。在.ascx控件的.cs文件中添加逻辑,该逻辑将包含所有用于数据库调用的代码。
之后,可以将创建的模块安装到站点的扩展中,以便可以使用它。只需将模块添加到页面中,就可以在整个站点中使用相同的模块。