在我的自定义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 = "";
现在我的问题是如果用户名,密码或baseServiceurl为空,我该如何将其重定向到我的模块设置(称为settings.ascx)控件。
我确定它不像Response.Redirect('settings.ascx')那么简单;
我的目标是取代 username =“”;
使用类似于Response.Redirect('settings.ascx');
的代码段请帮忙
答案 0 :(得分:1)
如果要加载在DNN中注册的其他ASCX文件(通过MANIFEST文件在模块定义中注册),可以通过调用EditUrl方法或DNN中的NavigateURL方法来执行此操作。
EditUrl(“Settings”)其中Settings是模块定义中定义的ControlKey。
如果您的控件继承自PMB,则可以使用PortalModuleBase编辑URL。
答案 1 :(得分:0)
再次感谢Chris,你的答案是正确的,但我决定通过模式弹出来获取模块的设置。这就是我做的答案,以获得javascript弹出脚本和网址,我右键点击齿轮图标使用谷歌浏览器检查元素。
然后我复制了锚标记href属性的内容,这看起来有点像
image_tag
在我的default.aspx页面中,我创建了一个没有href的锚标记。我把它作为一个服务器控件,通过输入runat = server并向其添加一个ID并使可见性为false(在我的逻辑中,如果它不符合我的标准,我会将其显示)
href="javascript:dnnModal.show('http://localhost/TestPage/ctl/Module/ModuleId/417?ReturnURL=/TestPage&popUp=true',/*showReturn*/false,550,950,true,'')">
接下来,我创建了一个动态构建链接的方法
<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();
}