Где я могу поместить классы при использовании типа проекта веб-приложения 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 другому разработчику, и он может легко повторно использовать классы, которые вы разработали.