4

マスターページにスクリプトマネージャーがあります。ページ上の他のJavaScriptで問題が発生しているため、webresourse.axdを削除する必要があるコンテンツページが1つまたは2つあります。

これらのページでスクリプトマネージャーを無効にするにはどうすればよいですか?

ScriptManagerオブジェクトには、その仕事をしているように見えるプロパティがないようです。

これは可能ですか?

4

4 に答える 4

7

<asp:ScriptManager />を MyScriptManager.ascx などのカスタム コントロールに移動します。.ascx ファイル内の唯一のコードは ScriptManager タグになります。その後、カスタム コントロールのVisibleプロパティを設定して、ScriptManager がレンダリングされるかどうかを制御できます。

<foo:MyScriptManager id="scriptManager" runat="server" Visible="false" />

コンテンツ ページで ScriptManager を表示/非表示にするために使用できるプロパティを MasterPage に追加することもできます。

// 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 にすることをお勧めします。マスター ページの 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;
于 2009-06-29T12:26:27.947 に答える
4

スクリプト マネージャーを 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>
于 2009-06-29T14:44:42.520 に答える
1

ここにたどり着いて、まだ UserControl で動作させることができない人のために...

.Net 4.0 を使用している場合は、新しい AjaxFrameworkMode プロパティを使用して Disabled に設定できます。

ScriptManager.AjaxFrameworkMode プロパティ

それが誰かを助けることを願っています!

于 2012-02-07T12:52:34.640 に答える
0

ネストされたマスターページを使用します。スクリプトマネージャーが配置される追加のコンテンツプレースホルダーを使用してマークアップを行うベースマスター。次に、ネストされたマスターの2つのバージョン。1つはスクリプトマネージャーあり、もう1つはスクリプトマネージャーなしです。また、ページは適切なネストされたマスターページを使用します。

コメントが意味をなすように以下のテキストを残していますが、これは機能しません...

これはどう:

-スクリプトマネージャーを使用したくないURIのリストを使用して、Web構成にアプリ設定を配置します。
-マスターのpage_initイベントハンドラーで、そのコレクションを取得してテストし、現在のページリクエストがリストにあるかどうかを確認します。その場合は、マスターのコントロールコレクションから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

注:あなたがしていることには多くの危険があります。マスターページに更新パネルがある場合、またはマネージャーを削除するページのいずれかに更新パネルがある場合、それらは爆破されます。マスターのコントロールコレクションとマスター初期化のページをループして、更新パネルを確認することもできます。でも、見つけたらどうするかわかりません。それらを削除すると、それらのコンテンツが削除される可能性があります。せいぜい、1)更新パネルが見つかった場合にスクリプトマネージャーを削除しないか、2)エラーをカスタマイズすることができます。

于 2009-06-29T11:56:43.780 に答える