在这里聚会有点晚了,但如果我理解正确的话,你想要一个具有不同视图的模块。为了增加 Prashant 的方法,这里有两个我经常使用的选项;
1.) 多视图
<asp:MultiView ID="myMView" runat="server" ActiveViewIndex="0">
<asp:View ID="ViewOne" runat="server">
...Content 1 here...
</asp:View>
<asp:View ID="ViewTwo" runat="server">
...Content 2 here...
</asp:View>
</asp:MultiView>
在后面的代码中,您可以根据某些条件设置活动视图
if(someCondition)
myMView.ActiveViewIndex = 0;
else
myMView.ActiveViewIndex = 1;
2.)占位符。这是我最喜欢的,因为它允许我在自己的控件中分离每个视图及其代码。您只需向 DNN 注册一个控件(主控件)。您可以拥有 10、100、1000 个子控件,它们不需要向 DNN 注册,因为它们将包含在 MasterControl.ascx 占位符中。在 MasterControl.ascx 中,添加
<asp:PlaceHolder ID="myPholder" runat="server"></asp:PlaceHolder>
按照 Prashant 在方法 1 中的说明,将 MasterControl 注册到 DNN。在后面的代码中,添加以下内容,
string childControl;
switch (condition)
{
case "condition1":
childControl = ControlPath + Child1.ascx";
break;
case "condition2":
childControl = ControlPath + Child2.ascx";
break;
...more conditions...
}
PortalModuleBase objModule = (PortalModuleBase)this.LoadControl(childControl);
if ((objModule != null))
{
myPholder.Controls.Clear();
objModule.ModuleConfiguration = this.ModuleConfiguration;
myPholder.Controls.Add(objModule);
}
只是做事方式不同而已。祝你好运。