Ответ 1
Да, вы можете использовать неполный класс - компилятор просто объединяет их все время компиляции для его создания.
Однако вы упомянули, что хотите "распространять" код - если код должен идти в несколько проектов, тогда частичные действия не помогут.
Вместо этого вы можете создавать классы базового контроллера (которые наследуют от 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), скорее всего, также будет применимо, и в этом случае вам может не понадобиться использовать маршрутизацию вообще, потому что маршрут по умолчанию, вероятно, сделает все это.