控件已分配键时添加DNN模块错误

时间:2010-12-08 19:26:37

标签: dotnetnuke dotnetnuke-5 dotnetnuke-module

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

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

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

基本上我想为我的模块提供多个视图,其中各个视图可以显示在不同的页面上(很像Blog模块)。我不是要创建一个分发包,所以我几乎要创建一个单独的模块,但那里的学习经验在哪里?

我已经搜索了有关创建具有多个视图且没有运气的模块的教程。任何人都可以提供一些见解吗?

3 个答案:

答案 0 :(得分:0)

我通过使用模块设置来选择我想要的那个显示器来解决这个问题,在我的例子中,我使用该设置来确定哪个前端是可见的,哪个不是后端代码。

另一种选择是让一个视图ascx是一个占位符,并根据模块设置注入你想要的ascx视图。

我之前使用过这两种方法,并且都很好用

答案 1 :(得分:0)

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

这篇文章谈了一点Dispatch View

听起来你找到了一个适合你的解决方案。

答案 2 :(得分:0)

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

如果此行为对您有用,则可以添加多个控件,即无需键即可添加的FIRST控件,以及使用特定键添加的辅助控件。然后,您可以使用NavigateUrl或EditUrl构建指向特定控件的链接。

从“编辑”角度来看,使用此模式可确保您的用户只拥有与您的模块一致的环境。从View的角度来看,其他模式的使用更常见的是“更好”的选择。

相关问题