Зависит от ситуации, но при условии, что вы не находитесь в точке, где должен быть создан новый контроллер, есть несколько подходов.
Многое зависит от ваших настроек. Одним из распространенных подходов является наличие сервисного уровня или сервисного агента, который будет работать для контроллеров, которые не являются специфическими. Использование сопутствующих или даже статических помощников должно удалить некоторые из повторений. 300 строк не кажутся плохими, если их разбить на тестируемые методы.
Мне также было бы интересно услышать другие мнения, помимо часто повторяемой мантры о создании большего количества контроллеров. Мы используем MVP и экспериментировали с субконтроллерами, но это зависит от осторожного использования и, вероятно, является плохой идеей.
В MVP обычно используется один контроллер на модуль, что относится к логической части вашего приложения. В вашем домене должно быть несколько четких и несколько, которые, возможно, немного сложнее различить.