首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Skin.AddPageMessage()方法?

如何使用Skin.AddPageMessage()方法?
EN

Stack Overflow用户
提问于 2012-03-09 03:53:53
回答 2查看 1.3K关注 0票数 4

我正在开发一个DNN模块,我想在我的ContentPane顶部显示一条信息消息,而不是在实际模块之上。我发现DotNetNuke.UI.Skins.Skin.AddPageMessage()应该做这件事。我没有得到我想要的行为,消息根本不会显示。

此方法的重载很少,一组接受Page对象,另一组接受Skin对象。

代码语言:javascript
复制
public static void AddPageMessage(Page page, string heading, string message, ModuleMessage.ModuleMessageType moduleMessageType)

public static void AddPageMessage(Skin skin, string heading, string message, ModuleMessage.ModuleMessageType moduleMessageType)

我确实查看了DNN源代码,发现它们最终实际上使用了相同的private static AddPageMessage(...)方法,该方法只是在提供的控件中查找ContentPane,并将新的ModuleMessage添加到其控件的集合中。

我应该以PageSkin参数的形式传递什么才能使这种正确性正常工作?

谢谢..。

EN

回答 2

Stack Overflow用户

发布于 2012-03-10 10:53:03

私有的AddPageMessage方法接受一个相当模糊的"Control“作为第一个参数。我认为这需要是当前的皮肤,因为它是ContentPane的FindControl。

这样做应该会让您获得对当前皮肤的引用:

代码语言:javascript
复制
var skin = Skin.GetSkin((PageBase)this.Page);
Skin.AddPageMessage(skin, "Header", "Message", ModuleMessageType.GreenSuccess);
票数 4
EN

Stack Overflow用户

发布于 2012-04-24 18:01:29

消息没有显示的原因是您在模块控件的控件设置中打开了“启用部分渲染”。

如果您正在使用AJAX (如果您将部分呈现设置为true,则会发生这种情况),DNN模块消息将从DNN本身关闭。

如果你只在页面上的一个控件上打开了部分渲染就足够了(不需要是你的控件,你是从哪里操作的)。DNN会将整个页面打包到ajax脚本管理器中,消息将不再起作用。

*编辑26.04.2012 10:45:

例如,您可以通过在Page_Load()中执行以下代码来获取当前的ScriptManager。如果管理器为空,则说明您没有启用ajax,并且modulemessages应该可以工作。如果bIsAjaxEnabled为true,则模块消息被禁用。

代码语言:javascript
复制
ScriptManager manager = AJAX.GetScriptManager(Page);
if (manager != null)
{
   bool bIsAjaxEnabled = manager.SupportsPartialRendering;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9623935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档