2012-05-16 3 views
15

В ASP.NET Webform App_Code является стандартной папкой для размещения кода и использования его во время выполнения. Но я думаю, что эта папка отличается от ASP.NET MVC, мой вопрос: :Папка ASP.NET MVC 3 и App_Code

  • где я должен помещать свой код (методы расширения, помощники, ...) в ASP.NET MVC. Когда я храню код в папке App_Code, я не могу использовать тему в controller, но они отлично работают в views.

  • О Entity Framework, тот же вопрос, где я должен поставить EDMX и TT файлов. Я не использую Code-First

Update:

После некоторого поиска, наконец, я создал новый библиотеки классов проекта в моем решении, код доступен во всех controllers и views. Я до сих пор не знаю, почему код в App_Code недоступен в контроллере

+1

Чтобы использовать классы app_code в контроллере, проверьте здесь http://stackoverflow.com/questions/1222281/app-code-classes-not-accessable-asp-net – yayadavid

+1

Классы App_Code скомпилированы во время инициализации приложений, поэтому во время компиляции они недоступны. –

+0

Папка App_Code не позволит вам публиковать предварительно скомпилированный MVC-проект (чтобы предотвратить первое нажатие страницы) и будет вызывать ошибку '' Не разрешен каталог '/ /App_Code /', потому что приложение предварительно скомпилировано '' – Muflix

ответ

31

У меня была такая же проблема, мой класс Utility.cs не был распознан внутри моего проекта MVC. Я изменил «Контент контента» на «Компоновку» и решил проблему. Надеюсь, что помогает.

+1

Если я это сделаю в своем проекте, я получаю: «Вызов неоднозначен между следующими методами или свойствами» – developer82

+0

Большое вам спасибо :) –

+2

Это побеждает цель App_Code. App_Code существует для того, чтобы вы могли отбрасывать файлы кода там и динамически компилировать их во время выполнения. Даже не имея при этом их часть проекта, все же установите для них команду «Скомпилировать сборку». – mare

0

Ну, попробуйте загрузить некоторые уже существующие проекты с открытым исходным кодом. Один из них довольно сложный, но очень крутой, если вы его поймете. orchard

Лучшая практика заключается в перемещении этой логики в DAL (уровень доступа к данным) или BLL (уровни бизнес-логики). Зависит от сложности вашего приложения.

2

Я рекомендую начинать с this tutorial. Сначала он использует EF-код, но вы можете просто сначала заменить код DbContext нормальным edmx ObjectContext, если хотите (подсказка: папка Models).

App_Code относится к Проекты веб-сайта. ИМО, это ужасный способ организовать все, кроме самых простых веб-сайтов. Проект MVC представляет собой проект Web Application Project, поэтому нет App_Code, и ваши классы могут быть определены практически в любом месте.

10

App_Code необходим в проектах веб-сайта, поскольку он имеет особое значение. Это означает: «Не обслуживайте эти файлы в веб-браузере». В ASP.NET MVC файлы в большинстве случаев напрямую не передаются браузеру, поэтому App_Code не требуется. Вы можете размещать файлы кода в любом месте в любой папке, потому что эти файлы скомпилированы в DLL и обычно не публикуются на самом веб-сайте.

Использование автономной библиотеки также является прекрасным решением.

+0

У меня такой же вопрос , Где я должен поместить свой код, который не входит в DLL? В веб-приложении все еще остается код. Хорошо, давайте предположим, что могу поместить файлы кода, которые я хочу. Есть ли какое-то стандартное место, где веб-разработчики ожидают, что код будет? Папка App_Code? Папка помощников? В некоторых примерах из MS я заметил, что есть папки, такие как Helpers and Models. – qub1n

+0

@ qub1n - Почему у вас есть код, который не находится в DLL? Даже код в ваших кодовых записях компилируется в DLL –

+0

, я мог бы. Итак, лучше всего, чтобы на самом деле не было одного файла с кодом в веб-приложении, кроме Global.asax.cs? – qub1n

-1

Для тех, кто не хочет вторую библиотеку проектов/классов и просто хочет создать простую папку для нескольких классов C#, я предлагаю «App_Classes».

+0

Пожалуйста, расскажите мне больше. Это сделало бы потрясающий ответ, если бы вы ввели введение в «App_Classes» и инструкции по его использованию. –

1

Никто не объясняет, почему App_Code существует в первую очередь. Это место, где вы добавляете файлы кода для получения динамической компиляции (во время выполнения). Это причина номер один для App_Code и почему она особенная.Вы можете поместить код в любую папку, которую хотите, но вам придется пометить его с помощью компиляции, чтобы компилировать в App_Code, что не является необходимым, на самом деле, большинство файлов в App_Code даже не являются частью проекта.

Он действительно работает в проектах ASP.NET MVC, вам просто нужно назвать свои файлы кода расширением .cshtml.

+0

Пожалуйста, объясните мне, как работает «Startup.cs», как это должно быть в App_Code? – BerggreenDK

Смежные вопросы