Частичный контроль пользователя - PullRequest
3 голосов
/ 19 августа 2010

В веб-формах Asp.net, почему пользовательский элемент управления должен быть частичным? Я попытался удалить частичное ключевое слово, и оно говорит:

Отсутствует частичный модификатор на объявление типа «тест»; другой частичное объявление этого типа существует

Где другая декларация?

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

Примечание: у вас есть 3 файла, если вы создаете WebApplication, но если вы создаете веб-сайт, вы получаете только 2 файла!

UserControl.ascx
UserControl.ascx.cs 

так на сайте где другая декларация?


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

Ответы [ 4 ]

1 голос
/ 19 августа 2010

ASP.NET использует частичные классы для codehind, потому что он должен сгенерировать все серверные элементы управления, которые вы объявили в вашем ASPX-файле, в класс и объединить все другие файлы данных, которые идут вместе с вашим codebind. Это позволяет распределять используемые ASP.NET классы по нескольким файлам.

С MSDN :

Файл кода содержит частичное класс, то есть объявление класса с ключевым словом частично (частично в Visual Basic) указывает на то, что это содержит только часть общего кода что составляет полный класс для стр. В частичном классе вы добавляете код, который ваше приложение требуется для страницы.

Это ключевая часть:

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

Что вы пытаетесь сделать, добавив универсальный тип в пользовательский элемент управления? Можете ли вы сделать это, добавив свойство Type в UserControl и затем используя это?

1 голос
/ 19 августа 2010

Они должны быть частичными, потому что дизайнер автоматически генерирует то, что вы делаете в окне «Дизайн». Обычно этот код находится в foo.designer.cs (или в любом другом расширении для формы asp.net). Если вы хотите изменить класс, вы должны сгенерировать пользовательский интерфейс вручную без дизайнера или использовать дизайнер и скопировать код в нужный класс.

1 голос
/ 19 августа 2010

На самом деле для каждого пользовательского элемента управления есть три файла.

UserControl.ascx
UserControl.cs
UserControl.designer.cs

Файл конструктора имеет реализацию partial, поэтому ваш код также должен быть partial.

0 голосов
/ 19 августа 2010

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

...