Почему файлы с выделенным кодом aspx объявлены как частичные классы? - PullRequest
7 голосов
/ 25 августа 2009

Почему код за частичным классом для страниц ASPX?

Ответы [ 5 ]

12 голосов
/ 25 августа 2009

Я хотел бы отослать вас к этой странице MSDN (обзор класса страницы ASP.NET).

Когда страница компилируется, ASP.NET генерирует частичный класс на основе файл .aspx; этот класс является частичным класс файла класса code-behind. Сгенерированный частичный файл класса содержит объявления для страницы управления. Этот частичный класс позволяет Ваш файл кода для использования в качестве часть полного класса без требуя от вас объявить контроль явно.

Смотрите таблицу:

альтернативный текст http://img30.imageshack.us/img30/7692/msdnchart.gif

Таким образом, у вас есть один класс, который содержит вашу логику, и один класс, который содержит дизайнерские вещи. Во время компиляции он генерируется как единое целое.

4 голосов
/ 25 августа 2009

Потому что есть другие части класса (вещи дизайнера), которые скрыты от разработчика

Например, вместо этого

public MyBasePage : System.Web.UI.Page
{
    ...
    protected System.Web.UI.Label lblName;

    protected void Page_Load(object sender, EventArgs e)
    {
    }
    ...
}

ASP.NET создает эти объявления в разных физических файлах, оставляя это

public partial class MyBasePage : System.Web.UI.Page
{
    ...

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    ...
}

Подробнее:

1 голос
/ 25 августа 2009

Другая причина для частичных файлов состоит в том, чтобы обрабатывать случай, когда некоторая часть определения класса генерируется инструментом (и может быть восстановлена ​​в какой-то момент), а остальная часть класса реализуется вами.

В таких случаях отказ от использования частичного класса может привести к перезаписи вашего кода или возникновению проблем с процессом генерации (если он вообще может это сделать).

При наличии частичных классов сгенерированный код можно легко восстановить, не касаясь вашего кода.

Еще один хороший пример этого - использование классов DataContext для LINQ-to-SQL: действительно умные вещи генерируются в один набор файлов частичных классов, и вы можете предоставить реализации - для проверки и т. Д. - в другом частичном классе. , уверенный в том, что повторное поколение не разрушит вашу работу.

1 голос
/ 25 августа 2009

Объявление Partial позволяет вам писать код в других файлах - просто поместите его в то же пространство имен и назовите класс одинаково, и они будут обрабатываться так, как будто они находятся в одном файле. Это отлично подходит для добавления функциональности к сгенерированным файлам. Я чаще всего использую его для добавления функций / свойств в мои объекты LinqToSql.

0 голосов
/ 30 июля 2013

Aspx.cs использует класс PARTIAL, потому что элементы управления (например, TextBox, GridView), к которым осуществляется доступ в этом классе, объявляются в файле .Aspx (то есть физически другом файле), поэтому один класс содержит объявление элемента управления (файл .aspx) и другую на основе бизнес-логики на элементах управления, объявленных в файле .aspx. когда они скомпилированы, рассматривается как единый класс.

...