我是dotnetnuke的新手编程模块。
此时我只使用view.ascx来显示我的逻辑。 我需要根据登录用户和附加用户角色显示不同的视图。我可以通过将一些控件设置为可见且不可见来实现,但我认为这不是正确的方法,并且使代码不必要复杂。
我在stackoverflow(DNN: Using multiple web user controls in one module and showing different controls in different pages)
中遇到了一个早期的问题但仍有一些问题:
当我想在单独的ascx中设计一个新视图时,我必须在vs2013中添加一个新的webformuser控件? 我认为使用占位符的链接中提到的解决方案将解决我的问题。但是,我需要将使用“view.ascx”的当前解决方案转换为具有占位符的解决方案?
我需要首先创建一个新的webusercontrol并将其命名为“MasterControl.ascx”并将占位符控件放入其中? 我需要为每个视图另外创建一个新的webusercontrol吗? view.ascx怎么样?我不再需要了吗?什么是控制路径?它是用户控件所在的路径吗?
这是以下布局:
MasterControl.ascx通话 userview1.ascx userview2.ascx ... userviewk.ascx
如何注册“MasterControl.ascx”?编辑时,我在当前模块中看不到“添加控件”?我使用DNN 7.2.x和Cristoc插件。
我必须替换child1 wirh userview1等?当我提供条件时,将显示相应的userview.ascx?
我是一个完整的新手所以我需要一步一步“食谱配方”如何使用一种“view.ascx”方法转换我当前的模块,使用更灵活的多个ascx解决方案。
提前致谢,
此致
亨克
上述链接中提到的代码副本。
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);
}
答案 0 :(得分:-1)
如果您只隐藏或展示一些内容,那么您可以使用<asp:Panels>
。您可以根据计算的属性或其他逻辑设置可见性;例如,我使用了IsSuperUser
属性。
ASCX文件:
<asp:Panel id="pnlSomeDeclarativeCode" runat=server>
<h1>Hide or show me</h1>
</asp:Panel>
在您的代码隐藏文件中:
private Initialise()
{
pnlSomeDeclarativeCode.Visabilty = UserInfo.IsSuperUser;
}