如何从一个DotNetNuke模块重定向到另一个模块?

时间:2011-08-12 11:49:10

标签: asp.net redirect module dotnetnuke

我是dotnetnuke的新手。

我在desktopmodules文件夹中开发了三个模块。像

desktopmodules(folder)

     |
     --  EnterpriseSearch(folder)
           EnterpriseSearch.ascx

     |
     -- document search(folder)
           docsearch.ascx

     |
     --result(folder)
           result.ascx

结果页面对于enterprice搜索和文档搜索很常见,我想从EnterpriseSearch和带有参数的docsearch重定向到结果页面。

我尝试将结果模块“type”作为“view”和DotNetNuke.Common.Globals.NavigateURL

的方法

我尝试将结果模块“type”设置为“edit”

editurl()

但我无法重定向。

我不想将这些页面放在一个文件夹中(根据我的要求)

请告诉我我的问题的解决方案

3 个答案:

答案 0 :(得分:3)

  1. 将EnterpriseSearch模块放到根DNN安装中名为EnterpriseSearch的内容页面上。访问此页面时,用户将在其地址栏中看到“domain / EnterpriseSearch.aspx”。

  2. 将DocumentSearch模块放到根DNN安装中名为DocSearch的内容页面上。访问此页面时,用户将在其地址栏中看到“domain / DocSearch.aspx”。

  3. 将结果模块拖放到根DNN安装中名为SearchResults的内容页面上。访问此页面时,用户将在其地址栏中看到“domain / SearchResults.aspx”。

  4. 在每个搜索模块的代码隐藏中,在用户单击搜索后输入以下代码(搜索按钮单击处理程序)

    Response.Redirect("/Search-Results.aspx?search=" & httpUtility.UrlEncode(TXT_Search.Text))
    
  5. 在SearchResults.aspx的搜索结果模块中,在您的代码隐藏页面加载功能中,执行以下操作:

    Dim MyString as String = httpUtility.URLDecode(Request.QueryString("search"))
    ' perform search ...
    

答案 1 :(得分:3)

由于控件位于不同的模块中,因此您需要使用Globals.NavigateURL导航到模块所在的特定页面。如果result.ascx是同一模块的控件,则可以使用EditUrl并传入控制键,但只能在同一模块定义中使用。

在这种情况下,您应该使用ModuleController.GetModulesByDefinition在门户网站上获取结果模块,然后导航到其中一个模块所在的页面。

答案 2 :(得分:0)

在视图控制按钮的单击事件中,将以下代码编写为

protected void Button1_Click(object sender, EventArgs e)
 {
    Response.Redirect(Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "WebUserControl", "mid=" + ModuleId.ToString()));          
 }

按照下面的url指令进行操作,并从一个页面重定向到另一页面。

http://www.dnnsoftware.com/Content/Dnn.Platform/Documentation/Using%20the%20Control%20Panel/Host%20Console/Extensions/Module%20Definitions%20and%20Controls/Adding%20a%20Module%20Control.html