2011-08-01 12 views
2
//aspx 
<script type="text/javascript"> 

    function linkRenderer(value, meta, record) { 
    var customerUrl = '<%=GetPageUrlWithQuery(Pages.CustomerDetails) %>'; 
    return String.format("<a href='{0}'>{1}-{2}</a>",customerUrl, value, record.id); 
    } 
</script> 


//aspx.cs 
public string GetPageUrlWithQuery(Pages pageType, string param = null){ 
//.................. 
} 

コンビネーションasp.netとJavaScript

+3

質問の書き直しが歓迎されます。 – Kangkan

答えて

1

質問を正しく理解している場合は、JavaScriptメソッドをサーバー側のメソッドに渡そうとしています。これを行う方法は、サーバーにajaxポストを使用することです。

$.ajax(
     { 
      url: url, 
      type: "GET", 
      data: { id: record.Id }, 
      dataType: "json", 
      success: function(response, status) { 
         //Do some work       
      } 
      } 
     ); 
+0

マイナーポイントですが、この場合、GETがやや適切です。 –

+0

更新しました。ありがとうございます。 – Steve

1

ASP.NETページのライフサイクルのため、このようにすることはできません。

あなたのC#のコードに埋め込まれた呼び出し:

<%=GetPageUrlWithQuery(Pages.CustomerDetails) %> 

ページがレンダリングされ、ブラウザに送信される前にされているように、サーバー上で実行されます。

Javascriptコードは、サーバー処理が完了した後で、ブラウザ内でクライアント上で実行されます。それまでにC#のメソッドにアクセスすることはできません(とにかく、直接ではありません)。

Javascriptからサーバーサイドのコードに電話をかけたい場合は、Ajax(またはそれに類するものですが、Ajaxは最も簡単です)を使用する必要があります。

サーバーのページ処理中にすべての作業を行うのと比較して、Ajax経由でサーバーに大きなオーバーヘッドが戻ってくるので、この作業をすべてサーバー側で行うことができます。

0

私はそれをJavaScriptの変数にアクセスすることができなくなりますのでGetPageUrlWithQuery機能がサーバー上で実行することを行う簡単な方法はないと思います。

このようにする必要がある場合は、通常、JavaScript変数を隠しフィールドに割り当て、サーバー側の関数で隠しフィールドの値を取り出します。

関連する問題