Asp.net-Mvc
在 ASP.NET MVC 中設置備用控制器文件夾位置
我們可以使用 HTML 視圖的預設文件夾約定的 MVC 應用程序,但我們希望設置備用“服務”文件夾,其中控制器僅用於返回 xml 或 json 的 Web 服務。
所以路由“/Services/Tasks/List”會被路由到“/Services/TaskService.cs”,而“/Tasks/List”會被路由到標準的“/Controllers/TaskController.cs”
我們希望將服務控制器與視圖控制器分開。我們不認為區域或使用另一個項目會起作用。解決這個問題的最佳方法是什麼?
您可以使用路由來執行此操作,並將控制器保存在單獨的命名空間中。MapRoute 允許您指定哪個命名空間對應於路由。
例子
鑑於此控制器
namespace CustomControllerFactory.Controllers { public class HomeController : Controller { public ActionResult Index() { return new ContentResult("Controllers"); } } } namespace CustomControllerFactory.ServiceControllers { public class HomeController : Controller { public ActionResult Index() { return new ContentResult("ServiceControllers"); } } }以及以下路由
routes.MapRoute( "Services", "Services/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new string[] { "CustomControllerFactory.ServiceControllers" } // Namespace ); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new string[] { "CustomControllerFactory.Controllers"} // Namespace );您應該期待以下響應
/服務/首頁
> > 服務控制器 > > >
/家
> > 控制器 > > >