1

我正在创建一个模块,并且能够将用户控件添加为视图类型,并且一切正常。我想添加第二个控件,也作为视图类型,但这就是麻烦开始的地方。

如果我只是将新控件添加到模块定义中,它只会显示该控件而不显示两者。如果我删除它,原始控件显示正常。回到模块定义,我进入模块控件并为各自的 Key 属性赋值。当我保存时,我的模块从它显示的页面上消失了。如果我尝试再次添加它,我会得到“对象引用未设置为对象的实例”。

经过反复试验,我发现如果我删除了密钥,我可以重新添加它再次工作的模块(至少如上所述)。

本质上,我希望我的模块有多个视图,其中各个视图可以显示在不同的页面上(很像博客模块)。我没有为分发创建一个包,所以我几乎要创建一个单独的模块,但是其中的学习经验在哪里?

我搜索了有关创建具有多个视图的模块的教程,但没有成功。谁能提供一些见解?

4

3 回答 3

0

I got round this issue by using the modulesettings to choose which display I wanted for that instance, in my case I used the setting to determine which front end was visable and which was not aswell as the backend code.

Another option is to have one view ascx which is a placeholder and inject either ascx view you want based on a modulesetting.

I have used both these methods before and both work well

于 2010-12-09T11:38:20.793 回答
0

开箱即用的 DotNeNuke 还支持使用多个视图,但是一旦您切换到不同的视图,模块就会进入“隔离模式”,在此它成为页面上唯一可见的模块。

如果此行为适合您,那么您可以添加多个控件,您添加的第一个控件没有键,您添加的辅助控件使用特定键。然后,您可以使用 NavigateUrl 或 EditUrl 构建到特定控件的链接。

从“编辑”的角度来看,使用此模式可确保您的用户拥有仅包含您的模块的一致环境。从视图的角度来看,使用其他模式通常是一种“更好”的选择。

于 2010-12-13T14:12:30.587 回答
0

在 DotNetNuke 中只能有一个“视图”,因此如果您想根据情况制作显示不同视图的东西,您必须创建一个 Dispatch 视图。因此,根据您的模块设置,或 URL 参数、cookie、会话,主视图中的某些内容会获得另一个用户控件来显示所需内容。

这篇文章讲了一点Dispatch View

听起来您找到了适合您的解决方案。

于 2010-12-13T01:56:49.927 回答