it-swarm-ru.tech

CodeFile против CodeBehind

В чем разница между CodeFile= "file.ascx.cs" и CodeBehind= "file.ascx.cs" в объявлении пользовательского элемента управления ASP.Net?

Один новее или рекомендуется? Или у них есть конкретное использование?

132
Soldarnal

CodeBehind: Требуется компиляция (модель ASP.NET 1.1). Скомпилированный бинарный файл находится в папке bin сайта. Вам необходимо выполнить компиляцию в Visual Studio перед развертыванием. Это хорошая модель, когда вы не хотите, чтобы исходный код отображался как обычный текст. Например, при доставке клиенту, которому вы не обязаны предоставлять код.

CodeFile: вы предоставляете исходный файл вместе с решением для развертывания. Среда выполнения ASP.NET 2.0 компилирует код при необходимости. Скомпилированные файлы находятся в Microsoft.NET [версия .NET]\Temporary ASP.NET Files.

159
Shafqat Ahmed

Я работаю с проектом приложения в 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. Когда я открываю сайт из Visual Studio, у меня нет проблем с ошибками синтаксического анализатора или ссылочными ошибками. Эта путаница возникает только тогда, когда я открываю приложение как проект в Visual Studio.

5
DavidHyogo

Файл Codebehind нужно скомпилировать перед запуском, но в src нам не нужно компилировать, а затем запускать ... просто сохраните файл.

5
Ranjeet Prasad