Да, вы можете использовать частичный класс - компилятор просто объединяет их все во время компиляции, чтобы создать один.
Однако вы упоминаете, что хотите «распространять» код - если код должен идтив несколько проектов тогда частичные вычисления не помогут.
Вместо этого вы можете создать базовые классы контроллеров (которые наследуются от System.Web.Mvc.Controller
в проекте библиотеки классов с необходимыми методами действия, а затем просто использовать маршрутизацию для маршрутизациианалогичные URL для разных контроллеров. Вот ссылка на учебник Asp.Net «Создание пользовательских маршрутов» , который может быть полезен для этого. Я настоятельно рекомендую просмотреть оставшуюся часть учебника, если есть другиеосновные аспекты MVC, в которых вы не уверены. Он не охватывает все, но делает основы.
Веб-приложение, которому нужно использовать их, просто имеет свои собственные контроллеры, наследуемые от них.распространяемые. Более того, теперь вы можете создавать точки расширения с помощью виртуальных методов и т. д., если естьЭлементы этих отчетов, которые могут потребоваться для настройки различных веб-приложений.
Таким образом, "Reports/Customers"
может маршрутизировать к CustomerReportsController
, а "Reports/Orders"
может маршрутизировать к OrdersReportsController
:
routes.MapRoute("CustReports",
"Reports/Customers/{action}",
new { controller = "CustomerReports", action = "Index", id = "" } );
routes.MapRoute("OrderReports",
"Reports/Orders/{action}",
new { controller = "OrdersReports", action = "Index", id = "" } );
Это наиболее упрощенный подход к этой проблеме - но я думаю, что использование Области (ссылка на пошаговое руководство по MSDN), скорее всего, также будет применимо, и в этом случае вам может не понадобиться вообще использовать маршрутизацию, потому чтомаршрут по умолчанию, вероятно, сделает все это.