CodeFile против CodeBehind
В чем разница между CodeFile= "file.ascx.cs" и CodeBehind= "file.ascx.cs" в объявлении пользовательского элемента управления ASP.NET?
Один новее или рекомендуется? Или они имеют конкретное использование?
3 ответа
CodeBehind: необходимо скомпилировать (модель ASP.NET 1.1). Скомпилированный бинарный файл находится в папке bin сайта. Вам необходимо выполнить компиляцию в Visual Studio перед развертыванием. Это хорошая модель, когда вы не хотите, чтобы исходный код отображался как обычный текст. Например, при доставке клиенту, которому вы не обязаны предоставлять код.
CodeFile: вы предоставляете исходный файл с решением для развертывания. ASP.NET 2.0 исполняет код при необходимости. Скомпилированные файлы находятся в Microsoft.NET[версия.NET]\Temporary ASP.NET Files.
Я работаю с проектом приложения в Visual Studio Express 2012 для Web и использую.NET 4.0. В коде, лежащем в основе файлов для страниц входа в систему и смены пароля, я обнаружил ситуацию, когда в объявлении мне потребовались CodeBehind и CodeFile.
Если я не добавлю ссылку на файл кода, например
CodeFile=login.aspx.cs
Веб-страница не анализируется, и браузер отображает ошибку синтаксического анализатора. Неважно, собираю я проект или нет.
Если я не добавлю код за ссылкой, как
CodeBehind=login.aspx.cs
Ссылки на классы безопасности, такие как MembershipUser, терпят неудачу как во время компиляции, так и при попытке использовать intellisense с ошибкой типа "Не удается найти тип или пространство имен MembershipUser". Я добавил ссылку на System.Web.ApplicationServices, как того требует платформа.Net 4.0.
Я должен добавить, что эти проблемные файлы выполняются в приложении на веб-сайте, созданном с помощью инструмента IIS Application. Когда я открываю сайт из Visual Studio, у меня нет проблем с ошибками синтаксического анализатора или ссылочными ошибками. Эта путаница возникает только тогда, когда я открываю приложение как проект в Visual Studio.
Файл Codebehind нужно скомпилировать перед запуском, но в src нам не нужно компилировать, а затем запускать... просто сохраните файл.