目前,我使用以下方法调用我的JavaScript函数:
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), Guid.NewGuid().ToString(), "$(function(){$.jGrowl('Hello World');});", true);
完美无缺!即使使用母版页和更新面板,它也能按预期工作。
但是,当我尝试在嵌入在使用jQuery厚盒调用的页面中的用户控件中执行相同操作时,它不起作用!
有谁知道如何解决这个问题?
答案 0 :(得分:4)
这解决了这个问题:
ScriptManager.RegisterClientScriptBlock(this.Page, typeof(UpdatePanel), Guid.NewGuid().ToString(), "$(function(){$.jGrowl('Hello World');});", true);
正如@Joel所提到的,我使用的类型作为函数的参数存在问题。
注意:如果您使用的是厚箱,可能是您没有在包含用户控件的页面中使用母版页。因此,jQuery也需要在该页面中引用,因为母版页没有参与厚盒。
答案 1 :(得分:2)
在我看来,你所拥有的与类型不相容。当您将其包含在实际页面中时,代码的这一部分:(this, typeof(Page),...
有效,因为您正在处理页面。一旦你把它放在UserControl中,你就不再处理一个Page。
您可以尝试的是向用户控件添加公共属性:
public System.Web.Page ParentForm { get; set; }
在包含控件的页面中,在Page_InitComplete
或Page_Load
事件中包含此代码:
myUserControl.ParentForm = this;
然后您可以将scriptmanager语句修改为:
ScriptManager.RegisterClientScriptBlock(ParentForm, typeof(Page), Guid.NewGuid().ToString(), "$(function(){$.jGrowl('Hello World');});", true);
答案 2 :(得分:0)
您确定您的用户控件正在调用databind()吗?我之前遇到过类似的问题。