【发布时间】:2014-09-26 08:55:26
【问题描述】:
我是 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 ... 用户视图k.ascx
如何注册“MasterControl.ascx”?编辑时我在当前模块中没有看到“添加控件”?我将 DNN 7.2.x 与 Cristoc 插件一起使用。
我必须用 userview1 等替换 child1 吗?当我提供条件时,会显示相应的 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);
}
【问题讨论】:
标签: dotnetnuke ascx