我的主页面上有一个脚本管理器。有一个或两个内容页面,我需要从中删除webresourse.axd,因为它导致页面上其他JavaScript的问题禁用某些页面上的ScriptManager
如何禁用这些页面上的脚本管理器?
使用ScriptManager对象犯规似乎有这似乎像他们会做的工作
这是任何可能的属性?
我的主页面上有一个脚本管理器。有一个或两个内容页面,我需要从中删除webresourse.axd,因为它导致页面上其他JavaScript的问题禁用某些页面上的ScriptManager
如何禁用这些页面上的脚本管理器?
使用ScriptManager对象犯规似乎有这似乎像他们会做的工作
这是任何可能的属性?
将您的< asp:ScriptManager/>移动到自定义控件例如, MyScriptManager.ascx - .ascx文件中唯一的代码将是ScriptManager标记 - 然后您可以在自定义控件上设置Visible属性,以控制是否呈现ScriptManager。
<foo:MyScriptManager id="scriptManager" runat="server" Visible="false" />
也许你可以甚至可以添加属性到你的母版,你可以在你的内容页面用来显示/隐藏的ScriptManager:
// In your master page
public bool ShowScriptManager {get; set;}
// In your master page's Page_Load
private void Page_Load(object sender, EventArgs e) {
...
scriptManager.Visible = ShowScriptManager;
...
}
由于大部分网页的需要ScriptManager的,它可能是一个想法,使其默认为真 - 我认为你可以在你的母版页的Page_Init方法构造做到这一点:
public SiteMaster() {
...
ShowScriptManager = true;
...
}
// Or alternatively
private void Page_Init(object sender, EventArgs e) {
...
ShowScriptManager = true;
...
}
然后,如果你设置中的MasterType在你的内容网页:
<%@ MasterType VirtualPath="~/path/to/master/page" %>
你只需要做这样的事情在内容页面的的Page_Load:
Master.ShowScriptManager = false;
我会使用嵌套的母版页。一个基本的母版,其中有一个额外的内容占位符,其中脚本管理器就是你的标记。然后是两个嵌套的主版本,一个带有脚本管理器,另一个没有。您的网页使用适当的嵌套母版页。
我要离开的文字下面这样的评论是有意义的,但是这并不工作...
如何:
-put在webconfig的appsetting与列表您不希望拥有脚本管理器的URI。
- 在主服务器的page_init事件处理程序中,获取该集合并测试以查看当前页面请求是否在列表中。如果是这样,请从master的控件集合中移除scriptmanager。
即,在后面的主网页代码:
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If DirectCast(Page, System.Web.UI.Page).AppRelativeVirtualPath = "~/Test.aspx" Then
Me.Controls.Remove(Me.FindControl("ScriptManager1"))
End If
End Sub
注:有很多的危险在你在做什么。如果您的母版页有任何更新面板,或者您正在删除管理器的任何页面上有更新面板,则它们将被炸毁。你可以循环控制master和init页面的控制集合,并检查是否有更新面板。虽然,我不确定如果你找到它们你会怎么做。删除它们可能会删除它们中的任何内容。充其量,您可以1)如果找到更新面板,则不要删除脚本管理器,或者2)自定义错误。
你也可以把脚本管理器进入的ContentPlaceHolder,
<asp:ContentPlaceHolder ID="cph_ScriptManager" runat="server"></asp:ContentPlaceHolder>
<asp:ScriptManager ID="ScriptManager" runat="server"></asp:ScriptManager>
</asp:ContentPlaceHolder>
和在你想删除它的页面上,有一个asp:Content标签指向它,并将它从页面中删除:
<asp:Content ID="content_SM_Overrride" ContentPlaceHolderID="cph_ScriptManager" runat="server">
<!-- ScriptManager Not Needed on this ASPX -->
</asp:Content>
对于任何人谁在这里结束了,但仍无法得到它与用户控件工作...
如果您使用的是.NET 4.0中,您可以使用新的AjaxFrameworkMode属性,并将其设置为禁用。
ScriptManager.AjaxFrameworkMode Property
希望帮助别人!
这可能会导致包含更新面板的页面发生错误。 – Kirtan 2009-06-29 12:05:32
同意,在您打算删除脚本管理器的页面上,您不应该有更新面板。但是这个问题是在他的问题中继承的:换句话说,任何页面都会删除脚本管理器,这就是他要求的。 – 2009-06-29 12:35:13
是的 - 我正在寻找如何删除脚本管理器。 我havwe尝试以下 ScriptManager sm =(ScriptManager)Master.FindControl(“sm”); sm.Visible = false; 但出现错误: 该方法或操作未实现。 所以问题很简单: 如何从页面中删除脚本管理器 有没有更新面板或类似的问题 – ChrisCa 2009-06-29 13:16:26