1

フォームに 20 個の ajax 編集可能なドロップダウンがあります。各ドロップダウンは、他の選択されたインデックスの変更に関してバインドします。

データベースからのバインドといくつかの操作に関する多くのレコードがあります。何がより良いパフォーマンスを発揮しますか?

このコードを使用してドロップダウンをバインドする必要があります:

 var XmlHttp;
       //Creating object of XMLHTTP For AJAX Method
       function CreateXmlHttp() {
           //Creating object of XMLHTTP in IE
           try {
               XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
           }
           catch (e) {
               try {
                   XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
               }
               catch (oc) {
                   XmlHttp = null;
               }
           }
           //Creating object of XMLHTTP in Mozilla and Safari 
           if (!XmlHttp && typeof XMLHttpRequest != "undefined") {
               XmlHttp = new XMLHttpRequest();
           }
       }

       function GetAppStoreLnk(id) {               
           var txtnameid = document.getElementById(id);

           CreateXmlHttp();

           var requestUrl = "Default2.aspx?id="+txtnameid+"";

           if (XmlHttp) {
               XmlHttp.onreadystatechange = function() { getschemename(txtnameid) };
               XmlHttp.open("GET", requestUrl, true);
               XmlHttp.send(null);
           }
       }

       function getschemename(id)
       { 
           // To make sure receiving response data from server is completed
           if(XmlHttp.readyState == 4) {    
            // To make sure valid response is received from the server, 200 means response received is OK
            if(XmlHttp.status == 200) {         
                var strData = XmlHttp.responseText;
            if(strData != "") {            
                 var arrscheme = strData.split("|");
                     id.length = 0;     

                 for(i=0; i<arrscheme.length-1; i++) {
                    var strscheme = arrscheme[i];
                var arrschnm = strscheme.split("~");

                    id.options[i] = new Option();
                id.options[i].value = arrschnm[0];
                    id.options[i].text = arrschnm[1]; 
                 }      
            } else {
                    id.length = 0;
                id.options[0] = new Option(); 
                id.options[0].value = "";
                    id.options[0].text = "Scheme Name is not available";        
                }

                    document.body.style.cursor = "auto";    
            }
            else {
            id.length = 0;
            id.options[0] = new Option(); 
                    id.options[0].value = "";
            id.options[0].text = "server is not ready";
                document.body.style.cursor = "auto";        
            }
           } 
    }   

または、UpdatePanel を使用する必要がありますか?
どちらが私にとってより良い選択肢になりますか? または、より良いソリューションはありますか?

このページはクライアントによって頻繁に使用されるため、非常に優れたパフォーマンスが必要であり、高速であることを確認したいと考えています。

vs2010を使用しています。

4

3 に答える 3

0

AJAX ルートの方が高速です。 UpdatePanel部分的なページの読み込みのように見えますが、実際にはページ全体が返され、 内のセクションが更新されるだけUpdatePanelです。

于 2012-09-18T18:38:12.827 に答える
0

UpdatePanel は、通常 AJAX に関連する効率性を提供しません。たとえば、UpdatePanel コントロールがサーバーに対して非同期 AJAX コールバックを実行してそのコンテンツを更新する場合、要求にはパブリケーション ASP のすべてのコンテンツが自動的に含まれることをご存知でしたか。NET従来、ステータス表示を含む。

UpdatePanel を使用する代わりに、WebMethods またはページ メソッドへの非同期呼び出しを使用することを好むアプリケーションは、より効果的です。

リンク: http://msdn.microsoft.com/fr-fr/magazine/cc163413.aspx

于 2012-09-18T18:38:29.113 に答える
0

私は残りの答えに同意します。悪UpdatePanelはページの全体的なパフォーマンスを低下させます。これは、 すべての非同期投稿でページのライフサイクル全体を実行するために、ページ全体のViewStateを前後に送信する必要があるためです。

単純な AJAX 呼び出しでは、これはまったく異なります。呼び出しは必要なデータのみを取得し、パフォーマンスが大幅に向上します。

しかし - 危険危険 DR ロビンソン

WebForms を使用していて、意図は 20 を入力するDropDownListsことなので、AJAX 呼び出しで試してみると、明らかに正しく動作することがわかります。ただしDropDownList、 javascript/jquery を介して 1 つの値を追加してページを投稿しようとすると、例外がスローされます。

これは、デフォルトで ASP.Net WebForms がサーバーに送信された値を検証するためです。値が ViewState に登録されていない場合、ページ コンテンツを改ざんしようとしてセキュリティ例外がスローされます。

残念ながら、このオプションをコントロール レベルで無効にすることはできません。ページ レベルで無効にする必要があります。

<%@ Page EnableEventValidation="false" ....

ただし、 WebForms ではこれは推奨されません...

于 2012-09-18T18:47:21.250 に答える