Где я могу разместить свои классы утилит в приложении ASP.NET MVC3? - PullRequest
8 голосов
/ 10 февраля 2012

Я занимаюсь разработкой веб-приложения в ASP.NET MVC3 с C # и Razor.

Мне нужно создать служебный класс , в который я помещаю функции для преобразования строки в даты (годы,месяцы, дни и т. д.).

В веб-формах ASP.NET я использовал такие классы для размещения внутри папки App_Code .В MVC такой папки нет, и я не думаю, что служебные классы не относятся ни к Models , ни к Helpers (папке, которую я создал для установки своих расширенийПомощники HTML).

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

Однако в моем случае мне просто нужно поместить один единственный класс с несколькими методами, поэтому, если мы игнорируем возможность повторного использования, разве не логичнее помещать служебный класс где-нибудь в моем веб-приложении MVC3?

Ответы [ 4 ]

11 голосов
/ 10 февраля 2012

У вас не должно быть служебных классов. Преобразуйте их в методы расширения, что несколько лучше. Просмотр моделей еще лучше.

Я обычно создаю папку «HtmlHelpers» или «Инфраструктура» для сантехники.

Папка "Common" похожа на мусорную корзину imho. Вы положили в нее весь мусор.

Обновление

Я бы поместил его в метод расширения для DateTime (помещенный в класс с именем DateTimeExtensions, который помещается в пространство имен с именем Infrastructure).

И я бы использовал его внутри модели представления или при создании модели представления (в контроллере).

Что касается какого проекта, это не имеет значения. Важно то, что у вас есть небольшие классы с конкретными заданиями (или обязанностями).

Некоторые утверждают, что у вас должно быть несколько библиотек классов с разными обязанностями. Я этого не делаю. Я создаю один проект пользовательского интерфейса и один проект для бизнес-логики. Тем не менее, я уверен, что классы реализуют один или несколько интерфейсов, чтобы иметь возможность рефакторинга приложения позже. KISS должен также применяться к структуре проекта, а не только к коду в них.

Другими словами: я бы поместил своих помощников в Ядро (проект бизнес-логики) в пространство имен под названием Инфраструктура.

1 голос
/ 10 февраля 2012

Почему бы вам не создать другую папку с именем Utility, Infrastructure или аналогичной в вашем проекте (например, рядом с папкой Helpers) и поместить туда класс (ы) утилит.

Вы всегда можете переместить его в отдельную DLL (проект библиотеки классов), если у вас возникнет необходимость в повторном использовании.

1 голос
/ 10 февраля 2012

Назовите это Общим, положите все туда.

Затем используйте пространства имен, как в этих примерах

Common.Formatters Common.Functions Common.Foo Common.Bar

0 голосов
/ 11 февраля 2015

Я предпочитаю создавать папку и пространство имен с именем Helpers, как предлагается здесь: Где можно разместить пользовательские классы в ASP.NET MVC?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...