Чтобы понять, что здесь происходит, важно отметить, что файл разметки (.ascx) наследует и имеет доступ к частным полям файла code-behind (.ascx.cs).Не наоборот: вы не можете ссылаться на объекты, определенные только в файле разметки из вашего кода.В вашем примере это также можно было бы решить, поместив в файл widget.ascx.cs следующее:
protected Label Label1;
Но что!Когда Visual Studio повторно выполняет управление, вы, вероятно, не видите такой строки в вашем файле .ascx.cs.Visual Studio управляет и поддерживает второй файл с выделенным кодом, файл .ascx.designer.cs.Символ partial
в public partial class widget
указывает на то, что код для элемента управления может быть определен в нескольких файлах.Вы управляете файлом .ascx.cs, а Visual Studio управляет .ascx.designer.cs.При добавлении, удалении и переименовании элементов управления из файла разметки Visual Studio должен добавлять, удалять и переименовывать связанные поля базового класса в файле кода разработчика.Если вы удалили, отредактировали или исключили этот файл, возможно, что Label1 мог быть недоступен.