我在我的主页上有一个脚本管理器。有一两个内容页面需要删除webresourse.axd,因为它会影响页面上的其他javascript。
我该如何在这些页面上禁用脚本管理器?
ScriptManager对象似乎没有任何属性可以完成此任务。
这种操作是否可行?
我在我的主页上有一个脚本管理器。有一两个内容页面需要删除webresourse.axd,因为它会影响页面上的其他javascript。
我该如何在这些页面上禁用脚本管理器?
ScriptManager对象似乎没有任何属性可以完成此任务。
这种操作是否可行?
将<asp:ScriptManager />移动到自定义控件中,例如MyScriptManager.ascx - .ascx文件中唯一的代码将是ScriptManager标记 - 然后您可以设置自定义控件上的Visible属性来控制是否呈现ScriptManager。
<foo:MyScriptManager id="scriptManager" runat="server" Visible="false" />
您甚至可以在MasterPage中添加一个属性,以便在内容页面中使用它来显示/隐藏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,因此将其默认设置为true可能是一个好主意-我认为您可以在Master Page的构造函数或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" %>
Master.ShowScriptManager = false;
<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>
对于任何在此处并且仍无法通过UserControl使其正常工作的人...
如果您使用的是.Net 4.0,您可以使用新的AjaxFrameworkMode属性,并将其设置为Disabled。
ScriptManager.AjaxFrameworkMode Property
希望这能帮助到某些人!
我会使用嵌套主页面。一个基础主页面包含您的标记,其中有一个额外的内容占位符,用于脚本管理器。然后是两个版本的嵌套主页面,一个带有脚本管理器,一个没有。您的页面使用适当的嵌套主页面。
我保留下面的文本,以便评论有意义,但这不起作用...
这样怎么样:
-在webconfig中放置一个appsetting,其中包含您不想要脚本管理器的URI列表。
-在主页面的page_init事件处理程序中,获取该集合并测试当前页面请求是否在列表中。如果是,则从主控件集合中删除脚本管理器。
即,在主页面代码后台:
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.Controls.Remove(Master.FindControl("sm"));
但那也没用。
嗯......我想回到起点。 - ChrisCa