2017-08-15 8 views
1

私はASPx/C#ページを持っています。保存すると、サーバーにポストバックされます。コントロール内のコンテンツが既にチェックされているデータストアに存在する場合、アラートをポップアップすることになっています。使用前のプログラマ:最終的には、送信の背後にあるコードでリテラルにJSを注入してページロード後に起動する

<asp:Literal ID="litError" runat="server" /> 

litError.Text = "<script type='javascript'>alert('An error occured while processing this request. If the error persists, please contact the help desk.');</script>"; 

これはJSアラートが正しく介して処理のデバッグ報告のすべてにもかかわらず、ポップアップされていません。私は決断を見つけることを試みる数日間、ここを含むインターネットを精査した。私はこれを発火させるために多くのバリエーションを試しました。

ライフサイクルのロード段階ではスクリプトが存在しないため、スクリプトがAJAXで起動できないと思われますが、何らかの検証が必要です。

スクリプトはbtnSave_OnClickメソッドにあります。残念ながら、Webアプリケーションの性質上、私はコードの詳細を表示することはできませんが、スクリプトは、アプリケーションDBに存在する項目を除いて、またはユーザが既にADシステムに存在する場合には起動されます。

答えて

1

ASPリテラルコントロールの使用を完全に削除して問題を解決できました。手助けしようとしているためZaighamとジェームズに

StringBuilder sbError = new StringBuilder(); 
     sbError.Append("<script language='javascript' type='text/javascript'>alert('" + strError + "');</script>"); 

     ScriptManager.RegisterStartupScript(this, this.GetType(), "sbError", sbError.ToString(), false); 

ありがとう:私はこれを使用しての私の最初の試みは、適切にフォーマットされた文字列を持っていなかったが、それは正しく背後にあるコードで実装以下のコードで機能していると信じています。リテラルコントロールメソッドが動作しなかったのは、そのメソッドを使用しようとしていたページにScriptManagerコントロールがあったからだと私は思う。

0

リテラルのスクリプトが動作しない理由はわかりませんが、代わりにこれを試すことができます。

あなたのスクリプトテキストは

string script = "<script>alert('Your alert message goes here');</script>"; 

その後ポストバック中のページにスクリプトを注入する(以前にエラーテキストを設定し、同じイベントで)メソッドを使用しRegisterClientScriptBlock

Page.ClientScript.RegisterClientScriptBlock(typeof(YOUR_PAGE_TYPE), "alert", script); 

ページが読み込まれると、警告が表示されます。

+0

私はあなたの提案した例をテストし、同じ結果を得ました。私はJSの別の部分がアラートが起きないようにすることを考え始めています。私は自分のロジックを解読するためにオリジナルの開発者と一緒に座る必要があります! –

+0

別のスクリプトで問題が発生していると思われる場合は、ブラウザのデベロッパーコンソールを参照することができます。通常、いくつかの有用なエラーの詳細が含まれます。 –

+0

私は今日、これを最も確実にやっていきます。私は私の発見を報告するためにここに戻ろうとします。 –

0

私が理解していることは、ボタンクリックイベント(条件に基づいて)の中のコードからクライアントスクリプトを実行したいとします。これを実現する最善の方法は、ScriptMangerクラスを使用することです。例:

Protected void btnSave_OnClick() 
{ 
    ScriptManager.RegisterStartupScript(btnSave, btnSave.GetType(), "myscript", 
    "alert('Your alert message goes here');", true); 
} 
+0

私はこの方法を使って同じ結果を得ました。私はこの問題が他のJSにあると思うようになったり、マスターページのコンテンツスペースにコールバックが存在することさえあります。 今後の提案がある場合は、試してみてうれしく思いますが、プロジェクトから取り出した現在のコードだけでも正しく動作します。この問題は、コールバックに渡されたとき、またはコールバックで渡されたときでなければなりません。 –

+0

このスクリプトコードがまったく実行されないようにするスクリプトの前にスクリプトエラーがある場合、ブラウザコンソールを確認できますか? –

+0

今日私はこれを最も確実にやっていきます。私は私の発見を報告するためにここに戻ろうとします。 –

関連する問題