3

古いC#コードをクリーンアップしていて、メソッドでこのブロックに遭遇しましたPage_Load

txtFirstName.Attributes.Add("onchange", "CheckChange();");
txtMiddleName.Attributes.Add("onchange", "CheckChange();");
txtLastName.Attributes.Add("onchange", "CheckChange();");
txtIdentifier.Attributes.Add("onchange", "CheckChange();");

そのままにしておく方が効率的でしょうか、それともHTMLで特定の属性を設定する方が効率的でしょうか。

4

4 に答える 4

4

そのままにしておく方が効率的でしょうか、それともHTMLで特定の属性を設定する方が効率的でしょうか。

ここでの効率はそれほど重要ではないと思います。おそらく、どちらの方法でも違いは非常に小さいでしょう。

しかし...HTML属性、特にjavascriptイベントとコードはクライアント側で作成する必要があると思います。

クライアント側でクライアントコードを作成する際の懸念事項とは別に、コードの開発と保守ははるかに簡単です。これが、Asp.net-MVCが新しいアプリケーションで使用されている理由の1つですが、Asp.Netにはほとんど新しいアプリケーションがありません。

于 2013-03-04T19:30:28.367 に答える
3

このTextBoxを使用して簡単なページを作成します

<asp:TextBox runat="server" ID="txtFirstName" onblur="CheckBlur()"></asp:TextBox>

そしてPageLoadにその行を配置します

txtFirstName.Attributes.Add("onchange", "CheckChange();");

ここで、コンパイルされたファイルを確認すると、コンパイラがこの行を追加していることがわかりました

#line 12 "D:\StackOverFlow\AttrTest.aspx"
((System.Web.UI.IAttributeAccessor)(@__ctrl)).SetAttribute("onblur", "CheckBlur()");

したがって、コンパイラは、コードビハインドに配置するのと同じ方法で同じ行を追加します。したがって、その観点からは、結果は速度、つまりページのコンパイルの点で同じように見えます。

于 2013-03-04T19:36:01.320 に答える
1

HTMLはそのまま出力するように記述でき、制御のオブジェクトモデルは文字列の連結とフォーマット操作を使用してHTMLに変換する必要があるため、HTMLで設定する方が少し効率的だと思います。

しかし、全体として、そのような属性が何千もなければ、ページのパフォーマンスには影響しないと思います。

ただし、このようなマイクロ最適化を試したことがないため、100%確信はありません。

于 2013-03-04T19:30:13.723 に答える
1

私はむしろaspxページで書くことを好み、ページが送信された後にアンカーを動的に生成し、それにjavascriptをリンクするなど、それが不可能な状況ではコードビハインドを選択します。パフォーマンスよりも保守性が重要になります。

編集

追加の入力として、次のようなタグでイベントを直接指定するのではなく、JavaScriptで緩く結合されたコードを使用することを検討してください。

document.getElementById('txtLastName').onclick = function () { 
//code 
};
于 2013-03-04T19:30:58.333 に答える