aspx.designer.cs как это работает? - PullRequest
24 голосов
/ 20 июля 2010

Я действительно новичок, поэтому мой вопрос может показаться смешным .. Но мне интересно, как работают файлы .aspx.designer.cs .. Впервые я работаю с решением, содержащим файлы .aspx.designer.cs для каждой страницы. Итак, я понимаю, что это объявление элементов управления, используемых в .aspx для выделенного кода ..

Вот мои вопросы:

Почему иногда решения не имеют файлов .aspx.designer.cs? (файлы скрыты или не существует?)

У меня часто возникают проблемы с этими файлами, они автоматически не воссоздают объявления элементов управления, когда я добавляю некоторые из них в код .aspx, что я делаю неправильно?

Ответы [ 3 ]

29 голосов
/ 20 июля 2010

Файлы .aspx.designer.xx являются мостом для файлов выделенного кода веб-форм ASP.NET и файлов разметки .aspx. Любой серверный элемент управления, существующий на странице разметки aspx, представлен здесь. Наиболее важными являются имя и тип серверного элемента управления.

Это, в частности, позволяет Visual Studio предоставлять пользователю IntelliSense на странице выделенного кода для серверных элементов управления, созданных во время разработки.

Как они работают: Visual Studio будет генерировать или поддерживать синхронизацию элемента protected в файле .designer при добавлении / удалении серверного элемента управления из конструктора.

  protected global::System.Web.UI.WebControls.DropDownList DropDownList1;

Обратите внимание, что файлы .designer создают partial class. Это обеспечивает связь с файлом code-behind. Вот так Intellisense получает хук между .aspx и кодом.

Вы можете восстановить свой файл конструктора: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/

18 голосов
/ 20 июля 2010

Visual Studio имеет два подхода для создания веб-сайтов: проекты веб-сайтов и проекты веб-приложений. (Хорошо, хорошо, три, если вы добавите MVC).

Только проекты веб-приложений имеют файлы designer.cs. Проекты веб-сайтов не имеют их.

Тип проекта веб-приложения был добавлен в Visual Studio 2003.

2 голосов
/ 06 декабря 2017

Как указал p.campbell, файл .designer.cs связывает файл .aspx с его файлом .aspx.cs CodeBehind.Без файла .designer.cs каждый элемент управления страницей .aspx в файле CodeBehind .aspx.cs будет возвращать ошибку «не существует в текущем контексте».Связывание в .designer.cs выполняется на основе свойства "Inherits" директивы @ Page в файле aspx вместе с пространством имен и классом файла CodeBehind .aspx.cs.Последний сегмент свойства «Inherits» должен соответствовать классу, определенному как в файле CodeBehind, так и в файле .designer.cs, а предшествующие ему сегменты должны соответствовать пространству имен файлов .designer.cs и CodeBehind.

Пример: myfile.aspx

<%@ Page Language="C#" 
    AutoEventWireup="true" 
    CodeBehind="myfile.aspx.cs" 
    Inherits="my.namespace.dot.classname" %>

myfile.aspx.cs

namespace my.namespace.dot {
    public partial class classname : Page { ... }
}

Примечание. Класс файла CodeBehind должен наследоваться от класса Page или некоторого его производного.

myfile.designer.aspx.cs

namespace my.namespace.dot {
    public partial class classname { ... }
}

Примечание: класс .designer.cs не заботится о наследовании, просто имя класса соответствует файлам CodeBehind и .aspx.

Вы можете восстановить потерянный файл .designer следующим образом (w3cgeek.com " Regenerate designer.cs "):

  1. Создать новый, пустой файл в том жеdir в качестве файлов .aspx и .aspx.cs с именем «myfile.aspx.designer.cs», где «myfile» - это имя файлов .aspx и .aspx.cs, которые вы хотите связать.
  2. Добавьте пространство имен с пустым классом в новый файл и убедитесь, что их имена совпадают сПространство имен и класс, указанные в файлах .aspx и .aspx.cs, которые вы связываете.
  3. Сохраните файл .designer.cs, внесите любые изменения в файл .aspx (например, добавив пробел),и сохраните файл .aspx.

Visual Studio должна автоматически заполнить файл .designer.cs всем необходимым кодом, чтобы связать файлы .aspx и CodeBehind.Ошибки «не существует в текущем контексте» теперь должны быть устранены!

РЕДАКТИРОВАТЬ: я добавил инструкции .designer.cs, потому что ссылка не работает, которая была первоначально опубликована p.campbell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...