これは、コントローラーに関する ASP.NET MVC 4 プロジェクトのファイル構造です。
|--Models
|--Controllers
|
|--api
| |
| |--UsersController.cs (MyProject.Controllers.API.UsersController.cs)
| |--PlacesController.cs (MyProject.Controllers.API.PlacesController.cs)
|
|--UsersController.cs (MyProject.Controllers.ViewsControllers.UsersController.cs)
|--PlacesController.cs (MyProject.Controllers.ViewsControllers.PlacesController.cs)
名前空間 MyProject.Controllers.API の下のコントローラーはすべて JsonResult を返します 名前空間 MyProject.Controllers.ViewsControllers の
下のコントローラーはすべてビューを返します
私の RouteConfig.cs はこれです:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/",
defaults: new { controller = "Places", action = "List" },
namespaces: new[] { "MyProject.Controllers.ViewsControllers" }
);
}
Web ブラウザーで に移動するとhttp://localhost/Places/List
、コントローラーを使用するため、期待どおりにビューが返されます。MyProject.Controllers.PlacesControlller.cs
json コントローラ用の MapRoute を作成して、Web ブラウザで に移動したときにhttp://localhost/api/Places/SomeAction
クラスが使用されるようにするにはどうすればよいMyProject.Controllers.API.PlacesController.cs
ですか?
注: ASP.NET MVC の API 機能を使用したくない
私はこれを試しましたが、うまくいきません:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "ViewRoute",
url: "{controller}/{action}/",
namespaces: new[] { "MyProject.Controllers.ViewsControllers" }
);
routes.MapRoute(
name: "APIRoute",
url: "api/{controller}/{action}/",
namespaces: new[] { "MyProject.Controllers.API" }
);
}