在 ASP.NET MVC 中设置备用控制器文件夹位置
我们可以使用 HTML 视图的默认文件夹约定的 MVC 应用程序,但我们希望设置备用“Services”文件夹,其中的控制器仅用于返回 xml 或 json 的 Web 服务。
因此,路由“/Services/Tasks/List”将被路由到“/Services/TaskService.cs”,而“/Tasks/List”将被路由到标准“/Controllers/TaskController.cs”,
我们希望将服务控制器与视图控制器分开。我们认为区域或使用其他项目不会起作用。解决这个问题的最佳方法是什么?
We can an MVC app that uses the default folder conventions for the HTML views, but we'd like to set up alternate "Services" folder with controllers used only for web services returning xml or json.
So the route "/Services/Tasks/List" would be routed to "/Services/TaskService.cs", while "/Tasks/List" would be routed to the standard "/Controllers/TaskController.cs"
We'd like to keep the service controllers separate from the view controllers. We don't think areas or using another project will work. What would be the best way to approach this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用路由来完成此操作,并将控制器保留在单独的命名空间中。
MapRoute 允许您指定哪个名称空间对应于路由。
示例
给定此控制器
和以下路由,
您应该期待以下响应
/Services/Home
/主页
You can do this using Routing, and keeping the controllers in separate namespaces.
MapRoute lets you specify which namespace corresponds to a route.
Example
Given this controllers
And the following routing
You should expect the following responses
/Services/Home
/Home
在Asp.Net Core中:我使用AreaFeature库ServiceCollectionExtensions
首先设置你的中间件;
在扩展中:
根据您的要求实现:
在我的情况下,我更喜欢一个单独的 _View 文件夹来存放像这样的功能文件夹中的视图
In Asp.Net Core: I used AreaFeature library ServiceCollectionExtensions
First set your middleware;
In the extenssion:
implement as according your requirement:
In my case i preferred a separated _View folder for views in the features folders like that
您需要创建自己的控制器工厂来实现 IControllerFactory。
查看 http://nayyeri.net/custom-controller-factory-in -asp-net-mvc 为例。
You'll want to create your own controller factory implementing IControllerFactory.
Check out http://nayyeri.net/custom-controller-factory-in-asp-net-mvc for an example.
如果您看到黄色文件夹名称
在root中添加文件夹名称
后,您必须修改routes.MapRoute为“App_Start> RouteConfig”
修改默认路由
并添加此
If you see yellow folder names
Add folder Name in root
After, you have to modify routes.MapRoute into "App_Start > RouteConfig"
Modify Default route
and Add this