0

ASP.NETおよびC#を使用したデータの読み込みに関するベストプラクティスについて質問があります

概要として、サポートするWebサービスを使用してかなり大きなXMLファイルを取得するWebページがあります。次に、そのファイルは、ListViewのロードに使用するためにクライアント側のJavaScriptに変換されます。

protected string clientSideJavaScripts;

protected void Page_Init(object sender, EventArgs e)
{
    // code goes here to submit a request and receive an XML Response from the web service
    // code goes here to set clientSideJavaScripts = translated Java Script from the XML Document
    // other code goes here
}

ASPファイルには次のようなものがあります。

<head>
    <title></title>
    <script type="text/javascript>
       <%=clientSideJavaScripts%>
    </scrpit>
</head>

...

ただし、さらに、ポストバックを引き起こすいくつかのボタンがフォームにあります。これらは、上記のjavascriptに直接関連していません。

すべてがうまく機能しますが、(ASP.NETライフサイクルに関する知識が限られているため)そのWebサービスはポストバックごとに呼び出されると思います。したがって、誰かがWebページ上のいくつかのasp:buttonsをクリックするたびに、ボタンの性質に関係なく、そのファイルをロードするオーバーヘッドが発生します。これは、ポストバックがInitから過去までのライフサイクルの段階を循環するためです。ポストバックイベント処理。

明らかなことは、ポストバックでWebサービスを呼び出さないことです。IE:

protected string clientSideJavaScripts;

protected void Page_Init(object sender, EventArgs e)
{
    if (!Page.IsPostBack) 
    {
       // code goes here to submit a request and receive an XML Response from the web service
       // code goes here to set clientSideJavaScripts = translated Java Script from the XML Document
    }
    // other code goes here
}

ただし、その結果、サーバー側の文字列'clientSideJavaScripts'はインスタンス化されなくなり、クライアント側は最初のポストバック後に必要なjavascriptを取得しなくなります。

私はこのような場合にjavascriptの永続性を処理するための明白な(そしておそらく一般的な)方法を見逃していると確信していますが、私はそれを知らないので、これに関する誰かのアドバイスを探しています。Webサービスが1回だけ呼び出されるようにするためのベストプラクティスは何でしょうか。

違いがあれば、AJAXとJQueryMobileも使用しています

アドバイスをいただければ幸いです。どうもありがとう

4

0 に答える 0