Обычно при разработке ASP.NET-страниц только самые простые из них не состоят из
некоторого числа пользовательских элементов (web user control). Очень часто
такие элементы содержат в себе некоторую логику клиентского скрипта написанную в
основном на javascript. Проблема может начаться тогда, когда пользовательскому
элементу необходимо включить на страницу ссылку на js-файл. Иногда можно увидеть
следующее решение проблемы:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs"
Inherits="controls_WebUserControl" %>
<script src="../js/some_js.js" type="text/javascript"></script>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="OnClick()"
/>
С виду все нормально, код будет работать. Это, наверное, первое решение которое
приходит в голову. Так могут написать даже вполне опытные программисты. И это
будет ошибкой. Все дело в том, что ASP.NET не может
отследить включенную ссылку на js-файл и будет добавлять ее каждый раз при
рендеренге очередного элемента на странице. То есть, если ваш элемент на
странице присутствует не единожды, то и ссылка на some_js.js появится несколько
раз. Что, понятно, нехорошо. Правильное решение проблемы сосредоточено в
механизме класса ClientScriptManager и его методов
IsClientScriptIncludeRegistered и RegisterClientScriptInclude. Вот правильное
решение, которое использует новый метод:
ClientScriptManager clientScript = Page.ClientScript;
Type t = this.GetType();
if (!clientScript.IsClientScriptIncludeRegistered(t, "someScript"))
clientScript.RegisterClientScriptInclude(t, "someScript", ResolveClientUrl("~/js/some_js.js"));
Этот код следует расположить в методе Page_Load или там где следует из логики
вашего элемента управления. Здесь происходит проверка на наличие
зарегистрированного скрипта и если, его нет, то через функцию
RegisterClientScriptInclude производится регистрация some_js.js на странице.
Источник: http://habrahabr.ru
Тестирование параллельного программного обеспечения представляет собой более
сложную задачу по сравнению с тестированием последовательной программы. Программист
должен знать о подводных камнях при тестировании параллельного кода, имеющихся
методологиях и инструментарии.
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее
реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности,
достоинства и недостатки.