Редактор кода Visual Studio

83

Многие из наиболее удобных функций Visual Studio появляются с началом написания кода, необходимого для поддержки пользовательского интерфейса. Чтобы приступить к написанию кода, нужно переключиться в соответствующий режим, который называется представлением отделенного кода (code-behind view).

Переключаться в этот режим и выходить из него позволяют две кнопки, расположенные прямо над окном Solution Explorer. Во всплывающих подсказках, которые появляются при наведении курсора мыши, эти кнопки называются View Code (Показать код) и View Designer (Показать визуальный конструктор). После переключения в режим кода отображается класс, лежащий в основе спроектированной веб-страницы.

ASP.NET является управляемой событиями технологией, а это значит, что в коде вебстраницы все происходит только в ответ на какое-то событие. Чтобы создать простой обработчик события Button.Click, нужно дважды щелкнуть на требуемой кнопке в режиме визуального конструктора. Ниже показан пример такого простого обработчика, который отображает текущую дату и время в текстовой метке:

protected void Button1_Click(object sender, EventArgs e)
{       
    Label1.Text = "Текущее время: " + DateTime.Now.ToLongTimeString();
}

Чтобы протестировать эту страницу, выберите в меню Debug (Отладка) команду Start Debugging (Начать отладку). Visual Studio запустит встроенный тестовый веб-сервер и используемый по умолчанию браузер с URL-адресом, указывающим на страницу, которая в текущий момент открыта в Visual Studio. После этого запрос будет передан системе ASP.NET, которая скомпилирует код страницы, а затем выполнит его.

Чтобы протестировать свою логику обработки событий, щелкните на кнопке, отображаемой на странице. После этого данная страница снова передается системе ASP.NET, которая запустит код обработки события и вернет новую HTML-страницу с данными:

Тестирование простой веб-страницы

Добавление ссылок на сборки

По умолчанию ASP.NET делает доступным для всех веб-страниц небольшой набор наиболее часто используемых сборок .NET. Эти сборки перечислены в таблице ниже и конфигурируются посредством специального конфигурационного файла, который действует на уровне всей машины. Чтобы использовать содержащиеся в этих сборках классы никаких дополнительных шагов выполнять не требуется.

Основные сборки для страниц ASP.NET
Сборка Описание
mscorlib.dll, Microsoft.CSharp.dll и System.dll Содержат базовый набор типов данных .NET, распространенных типов исключений и большое количество других фундаментальных строительных блоков
System.Configuration.dll Содержит классы для чтения и записи конфигурационной информации из файла web.config, включая пользовательские настройки
System.Core.dll Включает поддержку некоторой ключевой функциональности, появившейся в .NET 3.5, например LINQ
System.Data.dll Содержит классы типа контейнеров данных для ADO.NET вместе с поставщиком данных SQL Server
System.Data.DataSetExtensions.dll Включает поддержку для LINQ to DataSet
System.Drawing.dll Содержит классы, представляющие цвета, шрифты и формы, а также логику для выполнения рисования с помощью GDI+, необходимую для построения графиков "на лету"
System.EnterpriseServices.dll Содержит классы .NET для работы со службами СОМ+, такими как транзакции. В настоящее время эти классы применяются редко, поскольку многие из них были заменены более новыми средствами платформы
System.Web.dll Содержит ключевые классы ASP.NET, в том числе классы для построения веб-форм, управления состоянием, обеспечения безопасности и многого другого
System.Web.ApplicationServices.dll Содержит некоторые классы из числа тех, что в предыдущих выпусках находились в составе сборки System.Web.dll, но были перемещены сюда из-за того, что могут также применяться для написания кода настольных приложений. Это позволяет разработчикам создавать развитые клиентские приложения, ориентированные на усеченную версию .NET 4 Client Profile, которая включает в себя эту сборку, но не System.Web.dll
System.Web.DynamicData.dll Включает поддержку такой вспомогательной системы ASP.NET, как Dynamic Data
System.Web.Entity.dll Содержит элемент управления EntityDataSource, который позволяет подключать веб-формы к компоненту LINQ to Entities
System.Web.Extensions.dll Включает специфичную для ASP.NET поддержку для функциональных возможностей, которые появились в .NET 3.5, в том числе LINQ и ASP.NET AJAX
System.Web.Services.dll Содержит классы для создания веб-служб — единиц кода, которые могут активизироваться удаленным образом через протокол HTTP. Это средство по большей части заменено технологией WCF (Windows Communication Foundation)
System.Xml.dll И System.Xml.Linq.dll Содержит классы .NET для чтения, записи, поиска, преобразования и верификации данных XML как с применением LINQ to XML, так и без

Если нужно использовать дополнительные функциональные возможности или какой-то сторонний компонент, может потребоваться импортировать больше сборок.

Например, при желании использовать базу данных Oracle понадобится добавить ссылку на сборку System.Data.OracleClient.dll. Чтобы добавить ссылку, выберите в меню Website (Веб-сайт) пункт Add Reference (Добавить ссылку) (или выберите в меню Project (Проект) пункт Add Reference (Добавить ссылку) в веб-проекте). Откроется диалоговое окно Add Reference (Добавление ссылки) со списком всех зарегистрированных сборок .NET:

Добавление ссылки

В диалоговом окне Add Reference следует выбрать требуемый компонент. Если такового нет в списке, тогда нужно перейти на вкладку Browse (Обзор) и выбрать желаемый DLL-файл из соответствующего каталога (или перейти на вкладку Projects (Проекты) и выбрать желаемый DLL-файл из другого проекта в том же самом решении).

При добавлении ссылки на сборку, которая хранится не в глобальном кэше сборок (global assembly cache — GAC), Visual Studio создает в каталоге веб-приложения подкаталог Bin и копирует соответствующий DLL-файл в него. (Это происходит независимо от того, какая разработка применяется: с проектом или без.) Для сборок, хранящихся в GAC, данный шаг не требуется потому, что они являются общедоступными для всех установленных .NET-приложений на данном компьютере.

Если вы посмотрите на код класса любой веб-страницы, то заметите, что Visual Studio импортирует лишь несколько основных пространств имен .NET. Код выглядит примерно так:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

Добавление ссылки — это не то же самое, что импорт пространства имен с помощью оператора using. Оператор using позволяет использовать классы в пространстве имен без необходимости ввода длинных полностью квалифицированных имен классов.

Однако если вы пропустите ссылку, то включенные операторы using не будут иметь значения — классы все равно не будут доступны. Например, при импорте пространства имен System.Web.UI вы можете записывать в своем коде Page вместо System.Web.UI.Page. Но если вы не добавили ссылку на сборку System.Web.dll, содержащую эти классы, вы не сможете получить доступ к классам пространства имен System.Web.UI.

Средство IntelliSense

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

Список членов

Visual Studio упрощает взаимодействие с элементами управления и классами. Когда разработчик вводит после имени класса или объекта точку (.), Visual Studio тут же отображает список всех доступных для этого класса или объекта свойств и методов:

Функция IntelliSense в действии

То же самое Visual Studio делает и тогда, когда разработчик определяет переменную, отображая список доступных типов данных, и тогда, когда тот присваивает значение перечислению, отображая список допустимых значений.

Visual Studio также предоставляет список параметров и их типов данных при вызове метода или конструктора. Эта информация выводится в виде подсказки под строкой кода и отображается по мере ввода.

Поскольку в библиотеке классов .NET интенсивно используется перегрузка функций, методы могут иметь по нескольку разных версий. И когда это так, Visual Studio информирует о количестве доступных версий и позволяет просматривать определения методов для каждой из них, для чего необходимо щелкнуть на небольшой стрелке вверх или вниз внутри подсказки. После каждого щелчка на такой стрелке в окне подсказки отображается другая версия перегруженного метода:

Функция IntelliSense и перегруженный метод

Подчеркивание ошибок

Одним из наиболее полезных свойств редактора кода является подчеркивание ошибок. Visual Studio может определить различные ошибочные условия, такие как неопределенные переменные, свойства или методы, недопустимые преобразования типов данных и пропущенные элементы кода. Вместо того чтобы прерывать вашу работу для предупреждения о возникшей проблеме, редактор Visual Studio просто подчеркивает неправильный код. Вы можете навести курсор мыши на подчеркнутую ошибку и увидеть краткое описание проблемы в окне подсказки.

Система Visual Studio не помечает ошибки немедленно. Наоборот, она быстро сканирует код при попытке его скомпилировать и отмечает все найденные ошибки. Если код содержит хотя бы одну ошибку, Visual Studio выдаст вопрос о необходимости продолжения. В этот момент обычно операция отменяется для исправления ошибок, обнаруженных Visual Studio. (Выбрав продолжение, вам придется использовать ранее скомпилированную версию приложения, поскольку компиляторы .NET не могут создавать приложения, которые содержат ошибки.)

Пройди тесты
Лучший чат для C# программистов