DotNetNuke在多个编辑模块之间切换

时间:2013-02-26 18:57:06

标签: dotnetnuke dotnetnuke-module

我在DNN 7中有一个自定义模块,它有一个数据结构,其中项目属于类别(称为“部分”,而不是DNN分类,只是一个简单的部分名称列表)。模块编辑屏幕工作,以便在视图控件上单击每个类别的编辑链接,这将加载类别编辑屏幕(传递类别ID)。这很好用,当你保存时,我使用Globals.NavigateURL()返回到视图屏幕。这一切都按预期工作。

在每个类别编辑屏幕上,我还有一个该类别中的项目列表,每个项目都有一个编辑链接。单击编辑链接将打开项目编辑屏幕,传递正确的项目ID,并允许我编辑该项目。这一切都很好,直到你保存。保存工作正常,但是当我想将用户发回到类别的编辑屏幕时,它不起作用。当我使用时:

Response.Redirect(EditUrl("SectionId", sectionid.ToString(), "EditSections"), true);

......没有任何反应。它根本不会重定向到任何地方。这与我首先用于访问类别编辑页面的URL完全相同:

EditUrl("SectionId", Eval("SectionId").ToString(), "EditSections")

然后我使用类似的URL进入项目编辑页面:

EditUrl("ItemId", Eval("ItemId").ToString(), "EditItems")

我不明白为什么使用相同的URL导航到我已导航到的同一页面根本不会做任何事情。现在我将它们一直发送回视图,但是如果您需要将几个项目添加到同一类别以便必须导航回类别并添加另一个项目,只是将其发送回视图,这很痛苦。

之前有人看到这样的事吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试使用NavigateUrl的重载而不是EditUrl?

Globals.NavigateURL(TabId, "EditSections", "mid", ModuleId.ToString(), "SectionId", Eval("SectionId").ToString())

答案 1 :(得分:0)

我自己没有看到,但我不得不假设EditURL会以某种方式丢失上下文,因此你没有被发送到正确的位置。

我建议你尝试两件事之一(或两件事)。

  1. 调试EditURL返回的URL,看看是否可以找到 差。
  2. 对所有链接使用NavigateURL并传入MID = ## moduleid作为查询字符串参数,以确保正确 价值正在传递。
  3. 更新:如果您尝试拥有多个编辑视图,并在它们之间移动,您可能会考虑使用“加载器”而不是为编辑控件分别设置模块定义。基本上定义了一个Edit.ascx文件,并在其中加载其他ASCX文件,注入Panel。此模块http://dnnsimplearticle.codeplex.com/上的View控件可以做到这一点,但我之前没有尝试使用编辑控件。