在dotnetnuke框架中是否存在允许我将其传递给userId并且它将返回填充有该userId的详细信息的UserInfo对象的东西.
如果不是这样做的正常方法是什么?
我正在构建我自己的"user profile"模块,其中一个选项,用户可以更改其默认dnn配置文件图像.我在"代码背后"这样做时遇到了问题.我在用c#.
这是我到目前为止:
UserInfo myDnnUser = this.UserInfo;
myDnnUser.Profile.InitialiseProfile(PortalId);
myDnnUser.Profile.SetProfileProperty("Photo", "new filename");
myDnnUser.Profile.SetProfileProperty("PhotoURL", "new url");
ProfileController.UpdateUserProfile(myDnnUser);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,当我查看dnn使用的"文件"表时,它仍然是相同的(旧)文件名.
有任何想法吗?
我正在开发DotNetNuke模块,并且在安装或分发它们之前自然希望它们被编译.在过去,我只是通过浏览到本地DotNetNuke安装的/ BIN文件夹来引用特定版本的DotNetNuke.dll.
这个引用允许我使用DNN基类并在那些基础上创建我自己的类.我还在我需要的DNN命名空间/类中使用各种辅助方法.(即从其PortalModuleBase,ModuleSettingsBase创建派生类,并使用其本地化类替换Microsoft的ASP.NET实现提供的类.)
我已经能够使用这种方法来制作直接的DLL引用(Copy Local = True,Specific Version = False),因为到目前为止我一直在将这些模块安装到我维护的客户端网站上.因此,我至少保留了他们开发的DotNetNuke版本 - 或更新版本.最近,我在开发中引用了6.1.3.108.
注意:这会自动将以下关联的DLL复制到我的模块的/ BIN目录中:
将它安装到NEWER版本的DotNetNuke网站上工作正常,这不是一个糟糕的开始.
我一直想知道的是,是否有一种非hackish方式使我的模块对DLL的次要,构建或修订级别不敏感?
我意识到这是我的责任,确保产品(如果在"中档"版本上开发)仍然可以在更早的版本和更新版本的产品上运行.也就是说,我觉得我可以对这些版本进行彻底的测试.对我来说,这是必须在开发中运行OLDEST主要版本的优先选择.
换句话说,我宁愿不开发6.0.0.0的引用,只是因为它可以在6.xxx上运行而不需要额外的努力.我只会这样做,如果有人没有一个很好的方式让我做引用说,6.1.3.108工作稍早或更晚的版本.(当然,我可以为主要版本更改制作不同的模块,例如5.xxx或7.xxx)
提前致谢!
我有一个DNN模块,它呈现一个用户控件(view.ascx)
一切正常(我已登录),我收到了DNN设置菜单.
但是当我添加另一个控件并加载它时:
string url = Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "View_Details", "mid=" + ModuleId.ToString());
Response.Redirect(url);
Run Code Online (Sandbox Code Playgroud)
新控件加载时,我丢失了设置链接.
有任何想法吗?是否有某个属性可以打开加载的用户控件的设置?
我正在研究DNN 6.0网站上的一般问题:一个DNN模块中的无法处理的异常会影响处理页面上的所有其他模块.例:
假设我有DNN页面,上面有两个模块.Module1具有onclick事件处理程序抛出异常的按钮.Module2只有一些标签文字.
因此,当用户按下Module1.button时,我们看到错误而不是Module1,而Module2不可见.
是否有可能在一个地方捕获所有这些Module1异常并让DNN处理页面上的其他模块?(我知道最简单/最简单的方法是在button.onclick中编写try/catch块,但是我不能在我们创建的所有模块中实现这样的方法,因为它需要很长时间.)
我正在构建dnn模块,允许登录用户以其他用户身份登录.
但我这里有一些有线问题.
这是我注销当前用户并以另一个用户身份登录的方式:
UserInfo userInfo = UserController.GetUserById(portalId, userId);
if (userInfo != null)
{
DataCache.ClearUserCache(this.PortalSettings.PortalId, Context.User.Identity.Name);
if (Session["super_userId"] == null)
{
Session["super_userId"] = this.UserId;
Session["super_username"] = this.UserInfo.Username;
}
HttpCookie impersonatorCookie = new HttpCookie("cookieName");
impersonatorCookie.Expires = DateTime.Now.AddHours(1);
Response.Cookies.Add(impersonatorCookie);
Response.Cookies["cookieName"]["super_userId"] = this.UserId.ToString();
Response.Cookies["cookieName"]["super_username"] = this.UserInfo.Username;
PortalSecurity objPortalSecurity = new PortalSecurity();
objPortalSecurity.SignOut();
UserController.UserLogin(portalId, userInfo, this.PortalSettings.PortalName, Request.UserHostAddress, false);
Response.Redirect(Request.RawUrl, true);
}
Run Code Online (Sandbox Code Playgroud)
在PageLoad()我尝试从这个cookie读取值但它没有读取任何东西:
try
{
string super_userId = Request.Cookies["cookieName"]["super_userId"];
string super_username = Request.Cookies["cookieName"]["super_username"];
if (!String.IsNullOrEmpty(super_userId))
{
this.Visible = true;
this.lblSuperUsername.Text = Session["super_username"].ToString(); …Run Code Online (Sandbox Code Playgroud) 我想创建一个模块,该模块基本上将 javascript 包含到 dotnetnuke 站点的每个页面上。我可以在当前页面中包含一个js文件,
ClientResourceManager.RegisterScript(this.Page,
"~/DesktopModules/AuthenticationServices/ZapperScanToLogin/view.js",
FileOrder.Js.jQuery);
Run Code Online (Sandbox Code Playgroud)
但我真正想做的是在主页上安装我的模块,它将在 dnn 站点的每个页面上包含 javascript。这可能吗,我该怎么做?
我已经实现了一个使用用户定义控件的DNN模块(这个用户定义控件已经实现了GoogleAnalytics跟踪供我们自己使用)。
该控件需要访问配置文件才能获取我们的谷歌分析帐户的配置设置。例如账户代码(UA-dddddd-dd)等。
我的问题:由于我在 DotNetNuke 上安装模块,放置配置文件的正确位置在哪里,或者默认情况下它将访问什么配置文件?
下面提供了控件中尝试访问配置文件的代码段:
string path = Assembly.GetExecutingAssembly().CodeBase;
FrameworkConfig.instance = new FrameworkConfig(ConfigurationManager.OpenMappedMachineConfiguration(new ConfigurationFileMap(path + ".config")));
Run Code Online (Sandbox Code Playgroud)
注意:FrameworkConfig是对象的包装类System.Configuration。
简而言之,我需要知道 Assembly.GetExecutingAssembly().CodeBase通过 DNN 模块调用时返回什么?其他选择?
c# asp.net configuration-files dotnetnuke-module dotnetnuke-7
一旦当前登录的用户到达我们的 DotNetNuke 页面上托管的我的应用程序,我就会尝试获取他们。该应用程序是用 React.JS 构建的,我在 HTML 模块内渲染它。当用户到达应用程序时,我将执行 ComponentDidMount 方法调用,并向我的 .ascx 文件发起 AJAX 请求以获取当前用户。(ComponentDidMount 仅在应用程序加载时自动调用一次 - 对于所有阅读本文的 .NET 用户)。进入 ASCX 文件后,我将执行下面的代码,但只获得“user”的输出。我是否应该调用一个类来在另一个文件中使用此令牌?我可以在下面的代码中做什么来让当前用户登录到该站点(遗憾的是,DNN 不使用会话变量,仅使用令牌)。
.ascx 代码:
<%
Response.Write("user " & [User:UserName])
%>
Run Code Online (Sandbox Code Playgroud) 我已经创建了应该使用一些JQuery插件的自定义DNN模块.
我加载插件很好.
但得到错误:
Uncaught TypeError: undefined is not a function imagesloaded.js?cdv=18:93
Uncaught TypeError: Object [object Object] has no method 'imagesLoaded' Masonry:755
GET http://dnn7site/jquery.min.map 404 (Not Found) Masonry:464
GET http://dnn7site/resources/shared/scripts/jquery/jquery.min.map 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
我认为这是因为JQuery我的自定义模块中没有导入.我包括其他JS文件,如:
<dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/com.demo.masonry/Scripts/jquery.infinitescroll.min.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/com.demo.masonry/Scripts/masonry.pkgd.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/com.demo.masonry/Scripts/imagesloaded.js" />
Run Code Online (Sandbox Code Playgroud)
但我不知道如何导入JQuery,任何帮助?
我正在使用DNN 7.1.1
dotnetnuke ×9
asp.net ×4
c# ×3
javascript ×2
jquery ×2
.net ×1
assemblies ×1
dotnetnuke-5 ×1
dotnetnuke-7 ×1
reactjs ×1
versioning ×1