2011-02-18 14 views
0

これはかなり簡単だと確信していますが、問題なく動作するようになっています。私は自分のページにjavascript関数を追加したいが、ページがポストバックしているときだけ。JavaScriptをページポストバックにのみ挿入する

私はいくつかのサーバー側のコードを呼び出すボタンを持っています、そして、それが終了し、ページが再ロードされているとき、私はJavaScript関数を呼びたいと思います。

私はちょうど隠された変数を追加し、ボタンをクリックしたときにそれを設定できると思っていますが、読み返しているときにジャバスクリプトをページに挿入したいと思うのです。

これは可能でしょうか、それとも良い方法ですか?

おかげで、 ニール

編集:わかりました。これはC#のコードで私のOnClickメソッドです。

protected void Save(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "<script type=\"text/javascript\">alert('hello world');</script>"); 
    EnforcementMatch(false); 
    EnforcementMatch(true); 
    ApplicationNotMatch(); 
    ApplicationMatch(); 
    Response.Redirect(Request.Url.ToString()); 
} 

別の編集:ちょうど当たり前、下部ののResponse.Redirectは私が入れたコードを相殺する私のページをリロードすることを実現しました!あなたはボタンのクリックイベントの上に置く場合は

答えて

4

あなたはClientScriptManager.RegisterClientScriptBlock

http://msdn.microsoft.com/en-us/library/btf44dc9.aspx

を使用することができ、あなたはそれがポストバックかでなければ心配する必要はありません。

+0

からすべての単一のポストバックで解雇され、Javascriptを上に表示されませんページ。ページがレンダリングされた後では呼び出されませんか? – Neil

+0

@Neil - 表示されるはずです。メソッドの使い方を慎重にする必要があります。 JavaScriptをダブルチェックしてください(MSDNの例のように)スクリプトタグを持っているかどうか確認してください。まだ問題がある場合は、質問を更新し、使用しているコードを表示してください。 –

0

別のスクリプトブロックに配置し、ポストバック時にのみレンダリングします。

<script type="text/javascript" runat="server" visible="<%#this.IsPostBack %>"> 
    TheCode(); 
</script> 
+0

scriptタグのvisible属性をサポートするブラウザはどれですか? W3Cのドキュメントhttp://www.w3schools.com/tags/tag_script.aspには記載されていないようです。 –

+0

いいえ、ブラウザには何も表示されません。 runat = "server"を任意のHTMLタグに入れると、asp.netは通常のテキストから実際のWeb.UI.HtmlControls.HtmlGenericControlに変換します。また、 'visible'プロパティは、コントロールをページ内でレンダリングする必要があるかどうかを示します。したがって、visible = "false"の場合、このタグはブラウザが受け取るページには含まれません。 –

+0

runat = "server"属性を追加すると、 ' – Neil

2

あなたはIsPostBack機能について知っていますか?

IsPostBack (MSDN)

if (IsPostBack) 
{ 
    ClientScript.RegisterClientScriptBlock() 
} 
+0

ええ、それは私が試したものが最初です、しかし、JavaScriptは、ページに表示されません。私はInit、PreRenderなどのイベントにも入れてみました。 – Neil

0

このスクリプトは、私も(サーバー側のクリックイベントに)これを試したのUpdatePanel

<script type="text/javascript"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_endRequest(function() { 
     alert('hello world'); 
    }); 
</script> 
関連する問題