ここでのパーティーには少し遅れましたが、私の理解が正しければ、異なるビューを持つモジュールが必要です。Prashant の方法に追加するために、私がよく使用する 2 つのオプションを次に示します。
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.) プレースホルダー。これは、各ビューとそのコードを独自のコントロールで分離できるため、私のお気に入りです。1 つのコントロール (マスター コントロール) を DNN に登録するだけで済みます。10、100、1000 の子コントロールを持つことができ、それらは MasterControl.ascx プレースホルダー内に含まれるため、DNN に登録する必要はありません。MasterControl.ascx に追加します。
<asp:PlaceHolder ID="myPholder" runat="server"></asp:PlaceHolder>
方法 1 の Prashant の指示に従い、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);
}
物事のやり方が違うだけです。幸運を。