DNN动态输入模板

DNN dynamic input to template

我开始在 DNN 中使用主题,我已经设置了三个文件 ASCX 文件,assemble 内容来自数据库。

我有一个包含这样的 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>

有了这个结构。我在想我可以 "loop" 第三个代码块遍历数据库中的所有条目。在这一点上,我没有这个工作,我认为它必须与使第二个和第三个代码块更加动态有关。有什么帮助吗?先感谢您。

这通常通过放置在页面上的模块来完成,而不是在皮肤本身中。

话虽如此,Skin/Theme 文件是 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) 的代码隐藏文件中,您可以加载数据源并将其绑定到转发器控件。

你可以使用DNN提供的Module的概念。您可以在皮肤中添加一个内容窗格,这样您就可以将模块添加到页面中。您只需编写 ascx 文件中给出的代码,您就可以通过单击给定内容窗格中的添加模块选项将模块添加到您的页面。

<main role="main" class="main-body main-template-main-body">

<div id="ContentPane" class="content-pane" runat="server"</div>

</main>

您可以在您为制作自定义模块而创建的不同项目中添加所有其他内容。在.ascx控件的.cs文件中加入你的逻辑,里面有你调用数据库的所有代码。

之后,您可以将创建的模块安装到站点的扩展中,以便您可以使用它。它允许您在整个站点中使用相同的模块,只需将该模块添加到您的页面即可。