13

HTML ビューの既定のフォルダー規則を使用する MVC アプリを作成できますが、xml または json を返す Web サービスにのみ使用されるコントローラーを使用して、別の "Services" フォルダーをセットアップしたいと考えています。

したがって、ルート "/Services/Tasks/List" は "/Services/TaskService.cs" にルーティングされ、"/Tasks/List" は標準の "/Controllers/TaskController.cs" にルーティングされます。

サービス コントローラーをビュー コントローラーから分離したいと考えています。エリアや別のプロジェクトの使用はうまくいかないと思います。これにアプローチする最良の方法は何ですか?

4

4 に答える 4

13

これは、ルーティングを使用し、コントローラーを別々の名前空間に保持することで実行できます。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
        );

次の応答を期待する必要があります

/サービス/ホーム

ServiceController

/家

コントローラー

于 2010-12-07T02:14:10.427 に答える
0

IControllerFactoryを実装する独自のコントローラーファクトリを作成する必要があります。

例については、http://nayyeri.net/custom-controller-factory-in-asp-net-mvcを確認してください。

于 2010-12-07T01:22:56.240 に答える
0

黄色のフォルダ名が表示される場合 ルートにフォルダ名を追加します

その後、routes.MapRoute を「App_Start > RouteConfig」に変更する必要があります。

デフォルト ルートの変更

routes.MapRoute(
          "Default",
          "{controller}/{action}/{id}",
          new { controller = "Home", action = "Index", id =     UrlParameter.Optional },
          new string[] { "mvcPartialView.HomeController" } // Namespace 
      );

そしてこれを追加

routes.MapRoute(
       "ApiControllerOne", // Name of folder
       "ApiControllerOne/{controller}/{action}/{id}",
        new { controller = "ApiFactory", action = "callFactoryOne", id = UrlParameter.Optional },
        new string[] { "mvcPartialView.ApiControllerOne" } // Namespace
    );
于 2016-08-02T16:55:59.660 に答える