【问题标题】:DotNetNuke Switching Between Multple Edit ModulesDotNetNuke 在多个编辑模块之间切换
【发布时间】:2013-02-26 18:57:06
【问题描述】:

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

有人见过这样的事情吗?

【问题讨论】:

    标签: dotnetnuke dotnetnuke-module


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      我建议您尝试两种方法中的一种(或两种方法)。

      1. 调试 EditURL 返回的 URL,看看是否能找到 区别。
      2. 为所有链接使用 NavigateURL 并为您的链接传入 MID=## moduleid 作为查询字符串参数,以确保正确 正在传递值。

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

      【讨论】:

      • 我可以返回模块,问题是我无法访问其他编辑页面,而我无法使用 NavigateURL 进行操作。问题只是在编辑页面之间切换。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多