2011-07-20 68 views
-1

私はいくつかのページファイル(aspx、aspx.cs)といくつかの唯一の(.cs)ファイルを含むasp.net(C#)プロジェクトに取り組んでいます。 scriptregisterを使用して、ページファイル(aspx、aspx.cs)からJavaScript/jQuery関数にアクセスできます。しかし私の質問は、どのように私はJavaScript/jQuery関数(.cs)ファイルからアクセスできます。私はいくつかのHTMLタグを(.cs)ファイルに生成しているので、JavaScript/jQuery関数を(.cs)クラスから呼び出す必要があります。.csファイルからJavaScript/jQuery関数を呼び出す方法C#

私が持っているファイルは、(例えば)以下のとおりです。

  • Default.aspxの
  • Default.aspx.cs
  • とWeb.cs(私の関心は、ウェブからのJavaScript/jQueryの関数を呼び出すことです.csファイル)
  • 実際

は、私は何をしようとしていることWeb.cs(ビジネスオブジェクト)の一部のHTMLコードを生成することで、web.csにHTMLコードを生成しながら、私はによって生成された他のいくつかの動的なHTMLコードを必要とします出力があるjQuery関数私の関心事:var output ="My HTML Code Generated by jQuery function"

私はWeb.cs HTMLコードを生成して上記のjQuery出力をマージする必要があります。

web.csからjQuery関数を呼び出して、jQueryの結果をweb.csに戻して合併する方法を教えてください。

おかげ

答えて

0

実際にスクリプト登録は「ページ」オブジェクトで行われます。つまり、Web.csはスクリプトを登録するページにアクセスできません。たとえば、Web.csにDefault.aspxページのスクリプトを登録させるには、インターフェイスまたはクラス定義を通じてDefault.aspx/cs "Page"オブジェクトのPage.ClientScript.RegisterClientScriptBlockメソッドにアクセスする必要があります。

+0

私は私の質問を変更した、plzはそれを見ている。 – irfan

0

JavaScriptがクライアント側であり、c#はサーバ側であるので、あなたは、サーバー側からJavaScriptを呼び出すことはできませんが、ページがクライアント側でレンダリングされるときに実行されるJavaScriptをスケジュールすることができます...

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

1

ASPコードは、サーバー側です。
JavaScriptはクライアント側にあります。

実際にはJavaScriptを呼び出すことはできません。
onload javascriptメソッドを生成するASPコードを使用してhtmlファイルを作成できます。
その後、htmlがロードされると、javascriptが実行されます。

0

絶対に堅実なユースケースがない限り、JavaScriptレンダリングをC#からまったく再考する必要があります。

通常、2つを分けるのがはるかに簡単です。 c#を使用してマークアップを生成し、適切な要素に "タグ"を付けます(おそらく、ASP.NETにはidsの扱いが酷いため、CSSクラスを使用します)。

単純にjQueryを使用してこれらのタグ付き要素を検索して操作しますが、JavaScript自体をインラインで生成するのではなく、外部jsスクリプトを使用します。

0

ScriptManagerをWeb.csに渡して、コードビハインドで使用しているのと同じメソッドを使用できますが、Web.csからjavascript文字列を作成して返すだけで、あなたが行ってきたように、あなたのコードビハインドから。

+0

私は私の質問を変更しました、plzはそれを見ています。 – irfan

0

クライアントスクリプトをスタンドアロンcsファイルから登録したいのであれば、この作業がわかる唯一の方法は、関数をページのClientScriptManagerに渡すことです。

+0

私は私の質問を修正した、plzはそれを見ている。 – irfan

1

これは、この質問には正直感覚の多くを作成しませんPage.RegisterStartupScript方法

<%@ Page Language="C#"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<script runat="server"> 
    public void Page_Load(Object sender, EventArgs e) 
    { 
    String csname1 = "PopupScript"; 
    String csname2 = "ButtonClickScript"; 

    if (!IsClientScriptBlockRegistered(csname1)) 
    { 
     String cstext1 = "<script type=\"text/javascript\">" + 
      "alert('Hello World');</" + "script>"; 
     RegisterStartupScript(csname1, cstext1); 
    } 

    if (!IsClientScriptBlockRegistered(csname2)) 
    { 
     StringBuilder cstext2 = new StringBuilder(); 
     cstext2.Append("<script type=\"text/javascript\"> function DoClick() {"); 
     cstext2.Append("Form1.Message.value='Text from client script.'} </"); 
     cstext2.Append("script>"); 
     RegisterClientScriptBlock(csname2, cstext2.ToString()); 
    } 
    } 
</script> 
<html > 
    <head> 
    <title>RegisterClientScriptBlock Example</title> 
    </head> 
    <body> 
    <form id="Form1" 
     runat="server"> 
     <input type="text" id="Message" /> <input type="button" value="ClickMe" onclick="DoClick()" /> 
    </form> 
    </body> 
</html> 
+0

私は私の質問を変更した、plzはそれを見ている。 – irfan

2

を使用して行われます。これがどのように連動するのかについて誤解を招くかもしれません。

c#コードはWebサーバー上で実行されており、出力はjavascriptを含むブラウザに表示されるHTMLコードです。

Javascriptはブラウザに読み込まれ、クライアントのコンピュータでローカルに実行されます。

クライアントページのいくつかの側面をjavascriptなどで読み込もうとすると、そのページ自体にスクリプトを追加するか(.aspxファイル)、Client.Register apiコールで登録または追加するか< script ....>タグを使用してファイルにインポートします。

私はWeb.csクラスが何をしているのか分かりません。私は何らかの種類のロジックやビジネスオブジェクトを想定しています。クライアント側を実行するためには、プレゼンテーション層に戻ってクライアントスクリプトの必要性を伝える必要があります。

あなたが何らかの理由であなたがサーバー側からjavascriptを実行できるという印象を受けているのなら間違いです。

関連する問題