Поделиться через


Использование Visual C# .NET для работы с файлами классов программной части в приложении ASP.NET

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

Исходная версия продукта: ASP.NET
Исходный номер базы знаний: 308143

Требования

В следующем списке описаны рекомендуемые аппаратные средства, программное обеспечение и сетевая инфраструктура.

  • Windows
  • .NET Framework
  • Службы IIS

Создание веб-приложения ASP.NET с помощью Visual C# .NET

В этом разделе показано, как создать новое веб-приложение ASP.NET с именем CodeBehindSamples.

  1. Запустите Visual Studio .NET.
  2. В меню Файл выберите пункт Создать и затем пункт Проект.
  3. В разделе "Тип проекта" щелкните "Проекты Visual C#". В разделе "Шаблоны" щелкните ASP.NET веб-приложение.
  4. В поле "Имя" введите CodeBehindSamples. В поле "Расположение" введите имя сервера. Если вы используете локальный сервер, оставьте расположение как http://localhost.

Использование файлов класса code-behind

Если вы используете файлы классов программной части с .aspx страницами, можно разделить код презентации от основной логики приложения (или программной части). Файл класса программной части компилируется таким образом, чтобы его можно было создать и использовать в качестве объекта. Это позволяет получить доступ к своим свойствам, методам и обработчикам событий. Для этого страница .aspx должна указать, чтобы наследовать от базового класса кода. Для этого используйте Inherits атрибут для директивы @ Page . Страница .aspx наследует от класса code-behind, а класс программной части наследует от Page класса.

По умолчанию, если вы используете Visual Studio .NET, Codebehind атрибут добавляется в директиву @ Page . Платформа .NET Framework фактически не использует этот атрибут. Вместо этого Visual Studio .NET использует этот атрибут для поддержания ссылки на связанный файл кода программной части для страницы .aspx.

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

Использование атрибута "Наследование" с предварительно скомпилированных классов

При предварительной компиляции классов кода в сборку можно использовать Inherits атрибут для указания класса, от которого наследуется. В этом сценарии при развертывании приложения не требуется включать фактический файл класса code-behind. Вместо этого необходимо развернуть сборку и страницу .aspx. Сборку необходимо поместить в Bin папку для приложения при развертывании приложения.

В этом разделе показано, как создать новую веб-форму, которая использует предварительно скомпилированный подход и наследует от класса code-behind.

  1. Чтобы добавить новую веб-форму с именем InheritSample.aspx в проект Visual Studio .NET, выполните следующие действия.

    1. В Обозреватель решений щелкните правой кнопкой мыши узел проекта, нажмите кнопку "Добавить" и нажмите кнопку "Добавить веб-форму".
    2. В поле "Имя" введите InheritSample.aspx и нажмите кнопку "Открыть".
  2. Перейдите в представление конструктора и добавьте элемент управления метки веб-формы на страницу .aspx.

  3. Щелкните правой кнопкой мыши страницу .aspx и выберите команду "Просмотреть код". Файл программной части открывается в редакторе.

  4. В файле программной части добавьте следующий код в Page_Load обработчик событий:

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Precompiled): Page_Load fired!";
    }
    

    Примечание.

    Этот код демонстрирует только то, что класс code-behind участвует в примере во время выполнения в последующих шагах.

  5. Переключитесь с файла класса code-behind на страницу .aspx в редакторе, а затем перейдите в представление HTML.

  6. В верхней части страницы просмотрите код директивы @ Page . Код должен быть похож на следующий код по умолчанию:

    <%@ Page language="c#" Codebehind="InheritSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.InheritSample" %>
    

    В этом примере страница .aspx наследует от класса программной части, именованного InheritSamples CodeBehindSamples в пространстве имен. По умолчанию веб-приложение, созданное в Visual Studio .NET, использует структуру ProjectName.ClassName для значения атрибута Inherits .

  7. В меню "Файл" нажмите кнопку "Сохранить все", чтобы сохранить веб-форму и другие связанные файлы проекта.

  8. В интегрированной среде разработки Visual Studio .NET в меню "Сборка " щелкните "Сборка ", чтобы создать проект.

  9. В меню Проект выберите пункт Показать все файлы.

  10. В Обозреватель решений щелкните, чтобы развернуть папкуBin. Сборка, созданная при компиляции проекта из предыдущего раздела (CodeBehindSamples.dll в этом примере), отображается в папкеBin.

  11. В Visual Studio .NET щелкните правой кнопкой мыши страницу в Обозреватель решений, а затем щелкните "Вид в браузере", чтобы запустить код. Метка заполняется следующим значением:

    (Precompiled): Page_Load fired!

Использование атрибута Src и компиляция по запросу

Если файлы класса программной части будут компилироваться по запросу вместо предварительной компиляции, необходимо использовать Src атрибут, чтобы указать относительный путь к файлу класса code-behind. Убедитесь, что при использовании этого метода необходимо включить фактический файл класса для развертывания приложения.

Примечание.

Дополнительные сведения о потенциальных проблемах при разработке приложений в Visual Studio .NET с помощью атрибута Src см . в разделе "Ссылки " в этой статье. Visual Studio .NET предназначен для предварительной компиляции кода приложения в сборку вместо использования метода компиляции по запросу, описанного в этом разделе.

  1. Чтобы добавить новую веб-форму с именем SrcSample.aspx в проект в Visual Studio .NET, выполните следующие действия.

    1. В Обозреватель решений щелкните правой кнопкой мыши узел проекта, нажмите кнопку "Добавить" и нажмите кнопку "Добавить веб-форму".
    2. В поле "Имя" введите SrcSample.aspx и нажмите кнопку "Открыть".
  2. Перейдите в представление конструктора и добавьте элемент управления метки веб-формы на страницу .aspx.

  3. Щелкните правой кнопкой мыши страницу .aspx и выберите команду "Просмотреть код". Файл программной части открывается в редакторе.

  4. В файле программной части добавьте следующий код Page_Load в событие:

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Src): Page_Load fired!";
    }
    
  5. Переключитесь с файла класса code-behind на страницу .aspx в редакторе, а затем перейдите в представление HTML.

  6. В верхней части страницы просмотрите код директивы @ Page . Код должен быть похож на следующий код по умолчанию:

    <%@ Page language="c#" Codebehind="SrcSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample"%>
    
  7. Чтобы упростить этот пример, удалите файл Global.asax из проекта. Это делается только в этом примере, чтобы предотвратить дополнительные ошибки, связанные со страницей программной части файла Global.asax .

  8. В меню "Файл" нажмите кнопку "Сохранить все", чтобы сохранить веб-форму и другие связанные файлы проекта.

    Примечание.

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

  9. Если вы выполнили действия, перечисленные в разделе "Использование атрибута "Наследование" с предварительно скомпилированных классов , необходимо удалить сборку в каталоге приложения, прежде чем выполнить остальные действия, описанные в Bin этом разделе.

    Дополнительные сведения см. в разделе "Устранение неполадок " этой статьи.

  10. Чтобы запустить страницу, запустите Internet Explorer и введите URL-адрес страницы вручную. Не выбирайте представление в браузере или параметры "Обзор с помощью" в интегрированной среде разработки Visual Studio .NET. В противном случае, если вы используете Visual Studio .NET 2003, страница программной части будет предварительно компилирована в сборку, расположенную в каталоге Bin по умолчанию. После просмотра страницы появится сообщение об ошибке, аналогичное приведенному ниже:

    Не удалось загрузить тип CodeBehindSamples.SrcSample.

    Эта ошибка возникает из-за того, что файл класса code-behind еще не скомпилирован, и вы еще не включили Src атрибут для ссылки на файл класса code-behind.

  11. Добавьте атрибут в Src директиву @ Page следующим образом:

    <%@ Page language="c#" Codebehind="SrcSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample" Src="SrcSample.aspx.cs"%>
    

    Атрибут Src указан относительным путем к файлу класса code-behind (SrcSample.aspx.cs), а Inherits значение атрибута присваивается ссылке CodeBehindSamples.SrcSample.

  12. В меню "Файл" нажмите кнопку "Сохранить все", чтобы сохранить веб-форму и другие связанные файлы проекта. Помните, что не создавайте решение, так как требуется, чтобы файл класса программной части для этого примера компилировался по запросу.

  13. Чтобы запустить страницу, запустите Internet Explorer и введите URL-адрес страницы вручную. Не выбирайте представление в браузере или параметры "Обзор с помощью" в интегрированной среде разработки Visual Studio .NET. В противном случае, если вы используете Visual Studio .NET 2003, страница программной части будет предварительно компилирована в сборку, расположенную в каталоге Bin по умолчанию. На этом этапе страница должна быть загружена в браузере, а метка заполняется следующим значением:

    (Src): Page_Load fired!

    Файл класса программной части теперь скомпилирован по запросу и функциям правильно.

Устранение неполадок

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

    Сообщение об ошибке компилятора: CS1595: ProjectName.CodeBehindClassName определяется в нескольких местах; using definition from '%windir%:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\YourProjectName\d1444413\36fce407\assembly\dl2\009389be\231afa2d_d586c301\YourAssemblyName. DLL'

    Помните, что имена каталогов после YourProjectName в пути, указанном в сообщении об ошибке, могут отличаться, так как ASP.NET автоматически обрабатывает сборку каталогов и их имена.

    При использовании атрибута Src необходимо выполнить следующие действия, чтобы устранить проблему, связанную с сообщением об ошибке:

    1. Удалите каталог YourProjectName, на который ссылается сообщение об ошибке. Перед выполнением этого шага также может потребоваться выполнить iisreset команду из командной строки. Иначе можно получить подобное сообщение об ошибке:

      Не удается удалить GeneratedName.dll: доступ запрещен.
      Убедитесь, что диск не является полным или защищенным для записи, и что файл в данный момент не используется.

    2. Удалите сборку в Bin каталоге приложения.

    3. Чтобы запустить страницу, запустите Internet Explorer и введите URL-адрес страницы вручную. Не выбирайте представление в браузере или параметры "Обзор с помощью" в интегрированной среде разработки Visual Studio .NET. В противном случае, если вы используете Visual Studio .NET 2003, страница программной части будет предварительно компилирована в сборку, расположенную в каталоге Bin по умолчанию.

    Примечание.

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

  • Если вы хотите или если вам нужно содержать страницы веб-формы в одном файле, создайте страницы .aspx, чтобы содержать код вместо файла класса программной части.

    Дополнительные сведения о разработке однофайловых веб-формы в Visual Studio .NET см. в технической документации по Visual Studio 2003.

  • Если вы не выполняете предварительную компиляцию файла класса code-behind и если не добавляете Src атрибут в @ Page директиву, или если виртуальный путь для атрибута не является правильным, вы получите следующее сообщение об ошибке:

    Не удалось загрузить тип CodeBehindSamples.SrcSample.

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

  • При развертывании .aspx страниц, если связанные файлы классов программной части не предварительно компилируются, необходимо развернуть файлы классов программной части с помощью приложения. Кроме того, необходимо добавить атрибут @ Page в Src директиву, так как файл класса должен быть доступен при компиляции по запросу.

Ссылки

  • Дополнительные сведения о сборках см. в разделе "Сборки".

  • Дополнительные статьи, примеры и другие ресурсы, связанные с программированием ASP.NET, см. в ASP.NET.

  • Дополнительные сведения о директиве @Page и ее различных атрибутах см. в разделе @Page.

  • Дополнительные сведения о общем синтаксисе веб-формы см. в веб-формы синтаксисе.

  • Дополнительные сведения см. в обзоре модели ASP.NET Code-behind.