2011-10-18 9 views
-2

これは有名なようですが、ほとんど違いはありません。 JavaScriptの機能サーバー側からJavaScript関数を呼び出していますか?

:あなたは、このメソッドを参照してくださいとして

function ShowMessage(Message, Title, isAlarm) { 
     $("#dtext").html(Message); 
     $("span.ui-dialog-title").text(Title); 
     $("#dialog").dialog({ 
      open: function(e) { 
       var Dia = $(e.target); 
       if (isAlarm == true) { 
        Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("background", "red"); 
        Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("color", "White"); 
       } 
       else { 
        Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("background", "LightSeaGreen"); 
        Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("color", "White"); 
       } 
      }, 
      show: "blind", 
      hide: "clip", 
      modal: true, 
      resizable: false, 
      buttons: { 
       "Close": function(e) { 
        $(this).dialog("close"); 
        return true; 
       } 
      } 
     }); 
    } 

はjqueryの-コードで埋めます。これが単なるJavaスクリプトの場合、このコードを使用してその関数を呼び出すことができますが、この場合、このメソッドはうまく機能しません。 JSメソッドを呼び出す

C#が:

if (!Pointer.ClientScript.IsStartupScriptRegistered("message")) 
     Pointer.Page.ClientScript.RegisterStartupScript 
      (Pointer.Master.GetType(), "message", "ShowMessage('messageBox','" + Message + "',false);", true); 

私はこの問題を解決する方法がわかりません。 I Want just call this Js function from server-side?

編集1

ご静聴ありがとうございました。何人かの男が私の問題をより良く説明してくれることを望んでいる。なぜ私はできないのですか? Cuz I don't know what's exactly problem

私はこのプログラムをFireBugでテストし、JS関数の最初の行にブレークポイントを設定しますが、Js関数をブレークポイントHitを数ミリ秒間呼び出してからページをリロードすると実行時にブレークポイントを設定します完了し、何も起こらなかった。

私はJSとjQueryの初心者です。だから代わりに投票plz これらのコードのサンプルプログラムを試してみて助けてください。

再び感謝(特別ステファン、PirateKitten、ヴィドール)

編集2

私は単純なJSアラートを使用Old Functionを置き換えるために、このFunction(JQuery Message Function)を作りました。私は古いバージョンの仕事を言う必要があります(JS-Caller-Functionを書いてサーバーサイドから呼び出すとしても)。この場合

、偶数ページでI call new Function(JQ Function) with Jsかのように:

<button type="button" onclick="ShowMessage('hi','title',false)"> 
    Display Message 
</button> 

それは働いていた、しかし、when call that from server side, Function don't workています。

+2

という関数が早く呼び出されることがありますか?この変更は機能しますか? Pointer.Page.ClientScript.RegisterStartupScript(Pointer.Master.GetType()、 "message"、 "$(function(){ShowMessage( 'messageBox'、" + Message + "'、false);}"、true); ' –

+1

JSエラー?サーバエラーなど – Stefan

+0

あなたは「うまくいけない」と言っていますが、実際にはどういう意味ですか?JavaScriptが正しくレンダリングされていないのですか? 。?あなたが任意のJSのエラーが発生した場合、私は放火犯でこれを試してみてください – Kasaku

答えて

2

簡単に言えば、できません。

JavaScriptはclientsideを実行し、C#はserversideを実行します。

JavaScript serversideを生成してクライアントに出力できます。ページの最後に「レンダリング」さPage.ClientScript.RegisterStartupScriptに登録されているCall javascript from vb.net code behind

+0

作業していないええ。 – Rev

1

コード:

は、ここに私の答えを参照してください。 form終了タグの前の scriptタグで正確に表示されます。ただし、DOMツリーが完全に生成される前にコードが実行される可能性があります。あなたの ShowMessage機能アクセス以来

あなたの問題は、DOMツリーの要素が欠落に関連している可能性がDOMツリー。

私はあなたの質問を解釈した場合は正しくページにはJSのerrosはありません。これは、jQueryのセレクタの動作の結果であるchould:

$("#dtext").html(Message); 

これはID dtext とすべての要素のHTMLを設定します。 ID dtextの要素がまだ存在しない可能性があるため、$("#dtext")は空のコレクションを返し、何も行われません。あなたはjQueryの文書readyイベントでコードを実行しようとすることができ、この問題を回避するには

。 jQueryのは、ページが完全にロードされた場合、このイベントを発生させます:

$(document).ready(function() { ShowMessage('messageBox','" + Message + "', false); } 

ServerCode:あなたは、これが役立つだろう。この

Page.ClientScript.RegisterStartupScript(this.GetType(), "show", "ShowMessage()",true); 

希望のようにサーバ側からのJS関数を呼び出すことができます

if (!Pointer.ClientScript.IsStartupScriptRegistered("message")) 
     Pointer.Page.ClientScript.RegisterStartupScript 
      (Pointer.Master.GetType(), "message", "$(document).ready(function() {ShowMessage('messageBox','" + Message + "',false); }", true); 
+0

が問題の変化を反映している。 – Stefan

+0

あなたの解決策はうまくいかなかったが、Dom TreeとJQueryイベントを使用するために+1してください。 – Rev

+0

@Rev:あなたの問題についてのより良い説明をしようとするべきです。正確に何が働いていないのですか?この場合、この方法はうまく機能しません」むしろ中程度の問題記述です。だからあなたの答えは3つのdownvotesがあります... – Stefan

-1

あなたは

+0

を参照してくださいplzは私の質問を見て、これは解決策ではありません – Rev

関連する問題