Рейтинг:
1
Dave Kreskowiak
Это также звучит так, как будто вы написали один монолитный контроллер, обрабатывающий все. Реорганизуйте контроллер в несколько контроллеров, обрабатывающих определенную тему, например логин, домашнюю страницу ...
Member 8741848
Обычно он разделяется таким образом для большинства моих контроллеров, но в большинстве проектов я в конечном итоге получу один контроллер, который будет продолжать расти. например, если бы я написал что-то для автодилера, мой автомобильный контроллер был бы набит множеством различных действий, связанных с автомобилями. Или просто несколько действий, но со строками и строками кода.
Это просто неправильно, и я хотел бы просмотреть некоторые хорошо написанные / организованные проекты, чтобы увидеть, где я ошибаюсь. Или начните с нуля с хорошей книги / курса.
#realJSOP
Это вопрос личного организационного стиля. Помните, что "лучшая практика" - это не жесткое правило, а просто руководство.
Рейтинг:
0
#realJSOP
Вы можете разбить свой код контроллера на несколько файлов (вы должны сделать свой контроллер частичным классом). Я делаю это, если контроллеры "заняты". Это помогает держать вещи разделенными немного больше, и вы избегаете необходимости прокручивать прошлые методы, которые не применимы к тому, что вы делаете. Обычно я помещаю не украшенные действия в основной файл (вещи, у которых нет пары get/post), а действия, у которых есть get/post, получают свой собственный файл.
Я также перемещаю файлы контроллера в соответствующие папки просмотра. Это позволяет мне найти их без необходимости прокручивать, чтобы найти папку контроллеров, а затем найти нужный файл контроллера.
Конечно, такая организация файлов может быть ограничена/запрещена требованиями корпоративного стиля кодирования, но я всегда делаю это для своих собственных вещей.
F-ES Sitecore
Если ваши контроллеры "заняты", то вместо того, чтобы злоупотреблять частичными классами, вы всегда можете просто переместить бизнес-логику в модели, где она должна быть :)
#realJSOP
Это не всегда относится к моделям (например, загрузка файлов). Это просто организационная схема, поскольку большую часть времени я просто обновляю модель в своих пост-заявлениях. "Занят" также означает умеренно сложные перенаправления, основанные на данных, предоставленных Пользователем, или на том, какая кнопка вызывает метод post. Так что, как вы видите, это не так просто, как вы предполагаете.
Member 8741848
У меня было несколько таких, где контроллер полон работы с различными кнопками, даже если логика каждого из них довольно проста. Это те вещи, которые я хотел бы видеть в проекте с открытым исходным кодом или книге, чтобы увидеть, как я должен был справиться с этим.
#realJSOP
Мой ответ состоял просто в том, чтобы дать вам знать, что вы можете перемещать файлы контроллера внутри проекта и использовать частичные классы, и до тех пор, пока вы не измените пространство имен, вы-золото. Мне кажется, что вы просто хотите организовать файлы немного больше по своему вкусу. Если я сделал неверное предположение, просто игнорируйте меня. :)
#realJSOP
Как использование особенностей фреймворка считается "злоупотреблением"?
F-ES Sitecore
Частичные классы обычно используются для автоматически генерируемого кода, чтобы вы могли расширить его без переопределения ваших изменений при следующем запуске автогенерации. Entity Framework и веб-формы используют это для кода, который они генерируют.
#realJSOP
У меня нет никакого автоматически сгенерированного кода, кроме файлов шаблонов, которые VS генерирует при создании нового класса пользовательского интерфейса. Я не считаю использование частичных файлов плохим способом организации больших классов.
F-ES Sitecore
> У меня нет никакого автоматически сгенерированного кода
Именно так :)
Member 8741848
Из того, что я читаю здесь: https://softwareengineering.stackexchange.com/questions/135724/separating-data-access-in-asp-net-mvc было бы лучше иметь бизнес-сервис, занимающийся логикой контроллера. Это то, что вы делаете со своими неполными классами?
#realJSOP
Нет. Это просто организационная схема кода и способ ускорить поиск того, что я хочу в коде.
Если вы спросите десять человек, как они пишут MVC-приложения, вы получите десять разных ответов. Возьмите то, что вам нравится, и добавьте это в свой собственный набор инструментов.
Еще одна вещь, которую я делаю, - это пытаюсь минимизировать количество кода в файлах cshtml, обращенных наружу. У меня есть статические методы расширения для большинства элементов управления, которые упаковывают элементы управления MVC в соответствующие макеты. Вместо пяти-шести строк кода в файле cshtml для данного элемента управления у меня есть только одна.
Member 8741848
очень хорошая точка зрения на файлы cshtml, я даже не начал смотреть на их улучшение.