Где я могу поместить классы при использовании типа проекта веб-приложения Visual Studio.NET вместо веб-сайта? (ASP.NET)

У меня много опыта создания веб-сайтов ASP.NET в Visual Studio. Но есть альтернативный способ сделать то же самое, что и через веб-приложения, которые имеют немного другую структуру файлов.

Поскольку я создал свое первое веб-приложение, я больше не мог использовать классы (.cs файлы) в папке App_Code, они не были замечены классами ASPX и ASHX, если они не были перемещены в один и тот же файл.

Бывает, что я использую одни и те же классы во многих файлах, и я не хочу иметь их несколько копий. Где я помещаю эти классы? Существует ли какое-либо решение без создания другого проекта?

Ответ 1

Мы используем тип проекта Web Application в VS 2008 для всех наших проектов и помещаем наши общие классы в папку AppCode вместо папки App_Code. Он работает абсолютно нормально, мы без каких-либо проблем получаем доступ к нашим классам на всех страницах приложения.

Ответ 2

В проектах веб-приложений у вас гораздо больше свободы. Просто создайте подпапки под своим проектом, чтобы удерживать свои классы. Например, у вас может быть папка с именем "DAL" для хранения элементов уровня доступа к данным.

По желанию вы можете создать проект сборки и разместить свои классы там и просто ссылаться на него с вашего WAP.

В конечном итоге структура будет сводиться к тому, сколько классов у вас будет.

Ответ 3

Почему вы не хотите создавать другой проект? Это был бы самый простой подход, так как все ваши классы были бы размещены в этой сборке, которую вы могли бы ссылаться на проект в своем веб-приложении, а затем иметь доступ ко всему всему проекту.

Я очень рекомендую вам рассмотреть этот подход.

Ответ 4

Обычно у меня есть три проекта в рамках решения. Веб-приложение, веб-библиотека (базовые страницы и т.д.) И DAL. Это держит все в чистоте.

Ответ 5

Поместите их куда угодно. Я стараюсь хранить небольшие вспомогательные классы и базовые страницы для проекта в папке /Helpers в рамках веб-проекта, но отделяет материал DataLayer и универсальные многоразовые помощники к своим отдельным проектам.

Ответ 6

Я использую /Shared/Classes для классов общего назначения, используемых на сайте. Мне нравится помещать остальные классы в папку Классы, где они используются, например /blog/Classes/.

- EDIT -

Напомним, что я хранил классы в проектах приложений Web Forms. Теперь, когда я использую MVC, я храню классы общего назначения в /Classes и не общие классы в подпапках под /Classes, например /Classes/Blog. Короче говоря, Old_App_Code был переименован в Classes. Это похоже на естественное расширение соглашений об именах, которые я вижу в Microsoft, используя MVC, плюс он также работает со старыми страницами Web Forms.

Ответ 7

Я настоятельно рекомендую вам поместить все ваши классы (объекты домена) в отдельный проект. Таким образом, вы сможете легко протестировать свой бизнес-уровень (объекты домена), и ваши классы будут переносимыми. Portable означает, что вы можете отправить свою DLL другому разработчику, и он может легко повторно использовать классы, которые вы разработали.