这是我的 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 下的控制器都返回 Views
我的 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" }
);
}
当我使用网络浏览器访问时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" }
);
}