Asp.net-Mvc

在 ASP.NET MVC 中設置備用控制器文件夾位置

  • April 23, 2020

我們可以使用 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
       );

您應該期待以下響應

/服務/首頁

> > 服務控制器 > > >

/家

> > 控制器 > > >

引用自:https://stackoverflow.com/questions/4372548