2013-03-04 79 views
3

我正在清理一些較舊的C#代碼,並在Page_Load方法中跑過此塊。在asp.net中哪個更有效,在運行時或設計時添加屬性?

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

將它保持原樣或在HTML中設置這些特定屬性會更高效嗎?

回答

4

難道是更有效地離開它,因爲它是,或者在HTML設定的特定屬性?

我認爲這裏的效率不重要,可能兩者的差別都很小。

但是...我認爲HTML屬性和特別的JavaScript事件和代碼應該寫在客戶端。

獨立的顧慮當你寫客戶端上的客戶端代碼的代碼是一個更容易開發和維護。這是Asp.net-MVC在新應用程序中使用的原因之一,而Asp.Net幾乎有0個新應用程序。

+0

我認爲這段代碼屬於HTML,僅僅是出於文體的原因。我認爲它在性能上不會有太大的差別,但我想我會在這裏問。 – 2013-03-04 19:47:03

1

我認爲將它們設置爲HTML會稍微高效一些,因爲可以將HTML編寫爲按原樣輸出,並且需要使用某些字符串連接和格式化操作將控件的對象模型轉換爲HTML。

但總而言之,如果你沒有成千上萬個這樣的屬性,我想這不會影響你的頁面的性能。

雖然,我不是100%肯定,因爲我從來沒有試過這種微型優化

1

我更願意在aspx頁面中編寫代碼,並且會在頁面被提交併鏈接一些javascript之後動態生成錨點的情況下選擇代碼隱藏。它涉及到可維護性而不是性能。

編輯

作爲附加輸入,考慮其在javascript鬆散耦合的代碼,而不是直接在標籤上指定如

document.getElementById('txtLastName').onclick = function() { 
//code 
}; 
3

我創建了一個簡單的頁面,這個文本框

<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()"); 

所以,編譯器添加同一行,你把它放在後面的代碼以同樣的方式。因此,從這個角度來看,結果似乎以速度或頁面編譯的方式相同。

相關問題