2013-03-04 3 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, только по стилистическим соображениям. Я полагал, что это не будет иметь большого значения в производительности, но я думал, что попрошу здесь. –

1

Я полагаю, что было бы немного более эффективно устанавливать их в HTML, потому что HTML можно записать для вывода как есть, и объектная модель управления должна быть преобразована в HTML с использованием некоторых операций конкатенации и форматирования строк.

Но в целом я полагаю, что это не повлияет на производительность вашей страницы, если у вас нет тысяч таких атрибутов.

Хотя, я не уверен, не уверен на 100%, потому что я не пробовал такие микро-оптимизаций

1

Я предпочел бы писать на странице aspx и выберет код в ситуациях, когда это невозможно сделать, так как динамическое создание якоря после отправки страницы и привязка к нему javascript. Это касается ремонтопригодности, а не производительности.

Редактировать

В качестве дополнительного вклада, рассмотреть возможность слабосвязанную кода в JavaScript, а не непосредственно с указанием событий на бирках как

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

создать простую страницу с этим TextBox

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

и на странице Load Я размещаю эту линию

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

Теперь, я иду и проверить скомпилированные файлы и обнаружили, что компилятор добавить эту строку

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

так, компилятор добавить одну и ту же линию так же, как поместить его на код позади. Поэтому с этой точки зрения результаты кажутся одинаковыми с точки зрения скорости или компиляции страницы.

Смежные вопросы