我是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()
但我无法重定向。
我不想将这些页面放在一个文件夹中(根据我的要求)
请告诉我我的问题的解决方案
答案 0 :(得分:3)
将EnterpriseSearch模块放到根DNN安装中名为EnterpriseSearch的内容页面上。访问此页面时,用户将在其地址栏中看到“domain / EnterpriseSearch.aspx”。
将DocumentSearch模块放到根DNN安装中名为DocSearch的内容页面上。访问此页面时,用户将在其地址栏中看到“domain / DocSearch.aspx”。
将结果模块拖放到根DNN安装中名为SearchResults的内容页面上。访问此页面时,用户将在其地址栏中看到“domain / SearchResults.aspx”。
在每个搜索模块的代码隐藏中,在用户单击搜索后输入以下代码(搜索按钮单击处理程序)
Response.Redirect("/Search-Results.aspx?search=" & httpUtility.UrlEncode(TXT_Search.Text))
在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指令进行操作,并从一个页面重定向到另一页面。