重定向到另一个控制DNN



在我的自定义DNN模块的Page_Load事件中,我使用以下命令检索我存储的设置。

 if (((string)Settings["username"] != null) && ((string)Settings["username"] != ""))
  username = "";
 {
   username = (string)Settings["username"];
if (((string)Settings["password"] != null) && ((string)Settings["password"] != ""))
{
  password = (string)Settings["password"];
}
if (((string)Settings["baseServiceUrl"] != null) && ((string)Settings["baseServiceUrl"] != ""))
{
  baseServiceUrl = (string)Settings["baseServiceUrl"];
}
baseServiceUrl = "";

现在我的问题是如何将其重定向到我的模块设置(称为settings.ascx)控制,如果用户名,密码或baseServiceurl为空。

我相信它不像Response.Redirect('settings.ascx');

我的目标是取代用户名= ";

使用类似于Response.Redirect('settings.ascx');

请帮

如果你想加载在DNN中注册的不同的ASCX文件(在模块定义中注册,通过MANIFEST文件),你可以通过调用EditUrl方法或DNN中的NavigateURL方法来实现。

EditUrl("Settings"),其中Settings是模块定义中定义的ControlKey。

编辑URL在PortalModuleBase中可用,假设您的控件继承自PMB。

再次感谢Chris,你的答案是正确的,但我决定通过模态弹出框获得模块的设置。这就是我所做的,以获得答案,以获得javascript弹出脚本和url我右键单击齿轮图标使用谷歌浏览器和检查元素。

然后复制锚标记href属性的内容,这看起来有点像

href="javascript:dnnModal.show('http://localhost/TestPage/ctl/Module/ModuleId/417?ReturnURL=/TestPage&popUp=true',/*showReturn*/false,550,950,true,'')">

在我的默认设置。aspx页面我创建了一个锚标记没有href。我通过把runat=server和添加ID到它,使它成为一个服务器控件,并使可见性为假(在我的逻辑中,如果它不符合我的标准,我使它可见)

<a runat="server" class="btn btn-success" id="settingsLink" visible="false" > <img src="/images/action_settings.gif"><span>Settings</span></a>

接下来我创建一个方法来动态构建链接

private string settingsUrlBuilder()
{
    var s = new StringBuilder();
    var urlPartArray = TabController.CurrentPage.FullUrl.ToString().Split('/');
    var partUrl = urlPartArray[3].ToString();
    s.Append("javascript:dnnModal.show('");
    s.Append(TabController.CurrentPage.FullUrl.ToString().ToLower());
    s.Append("/ctl/Module/ModuleId/" + ModuleId.ToString());
    s.Append("?ReturnURL=/");
    s.Append(partUrl);
    s.Append("&popUp=true");
    s.Append("',/*showReturn*/false,550,950,true,'')");
    return s.ToString();
}

这是我在页面加载

中使用函数的地方
settingsLink.HRef = settingsUrlBuilder();  settingsLink.Visible = true;

最新更新