C# 使用EditURL()或NavigateURL()在DotNetNuke模块控件之间导航
好的,我是DotNetNuke的新手,需要在DNN中编写一个简单的模块,为每个人显示一篇文章,并允许管理员编辑文章/添加一篇新文章 我有一个测试页面,其中包含一个DNN模块,其中有一个模块定义和两个控件。默认控件根据querystring中的articleID字段显示文章。然后单击一个按钮以加载编辑控件并在查询字符串中传递articleID 如果我在onClick中使用C# 使用EditURL()或NavigateURL()在DotNetNuke模块控件之间导航,c#,asp.net,dotnetnuke,dotnetnuke-module,C#,Asp.net,Dotnetnuke,Dotnetnuke Module,好的,我是DotNetNuke的新手,需要在DNN中编写一个简单的模块,为每个人显示一篇文章,并允许管理员编辑文章/添加一篇新文章 我有一个测试页面,其中包含一个DNN模块,其中有一个模块定义和两个控件。默认控件根据querystring中的articleID字段显示文章。然后单击一个按钮以加载编辑控件并在查询字符串中传递articleID 如果我在onClick中使用EditURL(),编辑控件将加载正确的articleID,但使用的是管理员皮肤。如果我使用Globals.NavigateUR
EditURL()
,编辑控件将加载正确的articleID,但使用的是管理员皮肤。如果我使用Globals.NavigateURL()
,则会显示正确的外观,但我的编辑控件不会加载到页面中
关于如何判断我做错了什么,或者如何使用正确的外观加载编辑控件,有什么线索吗
我的两种切换到编辑控件的方法(在我的按钮单击事件中)如下所示:
string newURL = this.EditUrl("articleID", Request.QueryString["articleID"], "EditArticle");
Response.Redirect(newURL);
及
实际上你做得很正确-DNN中的editurl确实加载了管理员皮肤-通常这个皮肤是基于管理内容的人,所以它去掉了所有其他模块并显示了“基本”。对还是错这就是它的作用 如果不想这样做,可以在querystring中提供一个开关并显示一个单独的面板,或者执行多视图控件并根据查询字符串中的开关显示不同的视图
还有一些其他方法,如使用ajax将内容区域更改为编辑文本区域,或使用弹出模式窗口。有关如何工作的详细信息,您可以查看我的博客主题:。最后,如果您希望在不使用管理员皮肤的情况下导航到编辑控件,请查看Michael Washington的“模块导航选项”中的选项2到4。感谢您提供这些链接,它们非常有用,我认为DynamicControlsPlaceholder控件是,未来面向客户的模块的发展方向。谢谢。我想对于我目前的需要,这是可以接受的行为,因为只有管理员才会看到这个屏幕。对于具有多个面向客户的控件的未来模块,我认为最好的方法是通过上面由BDUKS链接的DynamicControlsPlaceholder动态加载控件。谢谢你自己,我自己已经忘记了这个解决方案-是的,其中一个也是非常可行的
string newURL = Globals.NavigateURL(this.TabId, "EditArticle","articleID="+Request.QueryString["articleID"]);
Response.Redirect(newURL);