【问题标题】:Navigating between DotNetNuke module controls using EditURL() or NavigateURL()使用 EditURL() 或 NavigateURL() 在 DotNetNuke 模块控件之间导航
【发布时间】:2010-12-27 00:05:56
【问题描述】:

好的,我是 DotNetNuke 的新手,需要在 DNN 中编写一个简单的模块,该模块将为每个人显示一篇文章,并允许管理员编辑文章/添加新文章。

我有一个测试页面,其中包含一个 DNN 模块,该模块具有一个模块定义和该定义中的两个控件。默认控件根据查询字符串中的 articleID 字段显示文章。然后单击一个按钮,该按钮应该加载编辑控件并在查询字符串中传递 articleID。

如果我在 onClick 中使用EditURL(),编辑控件将加载正确的 articleID,但使用的是管理员皮肤。如果我使用Globals.NavigateURL(),则会显示正确的皮肤,但我的编辑控件没有加载到页面中。

关于我做错了什么或如何使用正确的皮肤加载编辑控件的任何线索?

下面列出了我切换到编辑控件的两种方法(在我的按钮单击事件中):

string newURL = this.EditUrl("articleID", Request.QueryString["articleID"], "EditArticle");

        Response.Redirect(newURL);

        string newURL = Globals.NavigateURL(this.TabId, "EditArticle","articleID="+Request.QueryString["articleID"]);

        Response.Redirect(newURL);

【问题讨论】:

  • 有关其工作原理的更多信息,您可以查看我关于该主题的博客:weblogs.asp.net/briandukes/archive/2009/01/21/…。最后,如果您想在不使用管理皮肤的情况下导航到编辑控件,请查看 Michael Washington 的“模块导航选项”中的选项 2 到 4,adefwebserver.com/dotnetnukehelp/Misc/…
  • 感谢您提供这些链接,它们非常有帮助,我认为 DynamicControlsPlaceholder 控件是未来面向客户的模块的必经之路。

标签: c# asp.net dotnetnuke dotnetnuke-module


【解决方案1】:

实际上,您这样做是正确的 - DNN 中的 editurl 确实加载了管理员皮肤 - 通常此皮肤基于管理内容的人,因此它会去除所有其他模块并显示“基础”。对与错,这就是它的作用。

如果您不想这样做,您可以在查询字符串中提供一个开关并显示一个单独的面板,或者进行多视图控制并根据查询字符串中的开关显示不同的视图。

还有其他一些方法,例如将内容区域更改为使用 ajax 编辑文本区域或使用弹出模式样式窗口。

【讨论】:

  • 谢谢。我想对于我目前的需求,这是可以接受的行为,因为只有管理员会看到这个屏幕。对于具有多个面向客户的控件的未来模块,我认为最好的方法是通过上面 bdukes 链接的 DynamicControlsPlaceholder 动态加载控件。
  • 谢谢你自己,我自己已经忘记了那个解决方案——是的,这个解决方案也非常可行
猜你喜欢
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多