1

我在 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 导航到我已经导航到的同一页面根本不会做任何事情。现在我将它们一直发送回视图,但是如果您需要将多个项目添加到同一类别中,必须导航回该类别并添加另一个项目,然后才被发送回视图,这会很痛苦。

以前有人见过这样的东西吗?

4

2 回答 2

1

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

Globals.NavigateURL(TabId, "EditSections", "mid", ModuleId.ToString(), "SectionId", Eval("SectionId").ToString())
于 2013-03-04T20:46:53.227 回答
0

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

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

  1. 调试 EditURL 返回的 URL,看看是否能找到不同之处。
  2. 对所有链接使用 NavigateURL,并将模块 ID 的 MID=## 作为查询字符串参数传递,以确保传递正确的值。

更新:如果您尝试拥有多个编辑视图并在它们之间移动,您可能会考虑使用“加载器”而不是为编辑控件使用单独的模块定义。基本上定义了一个 Edit.ascx 文件,它在其中加载其他 ASCX 文件,注入到面板中。此模块http://dnnsimplearticle.codeplex.com/上的 View 控件可以做到这一点,但我之前没有尝试过使用编辑控件。

于 2013-02-26T19:25:20.937 回答