Asp.net mvc ActionResult方法的更长路径
在MVC4中,给一个方法一个比/{controller}/{method}更长的路由是否可能Asp.net mvc ActionResult方法的更长路径,asp.net-mvc,asp.net-mvc-4,controller,routes,action,Asp.net Mvc,Asp.net Mvc 4,Controller,Routes,Action,在MVC4中,给一个方法一个比/{controller}/{method}更长的路由是否可能 也就是说,我怎么可能有一个方法“test”,并且它的路径是/{controller}/api/test?是的。只需在常规/{controller}/{method}之前定义api/测试路由,以便api/测试路由在常规路由之前生效 注意:定义/api/test时,需要指定默认的操作方法 另外,您是否正在使用WebAPI?您可以通过修改项目的Global.asax.cs文件中的“RegisterRoutes
也就是说,我怎么可能有一个方法“test”,并且它的路径是/{controller}/api/test?是的。只需在常规
/{controller}/{method}
之前定义api/测试路由,以便api/测试路由在常规路由之前生效
注意:定义/api/test时,需要指定默认的操作方法
另外,您是否正在使用WebAPI?您可以通过修改项目的Global.asax.cs文件中的“RegisterRoutes()”来注册其他路由 例如:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"YourNewRoute", // Route name
"{controller}/api/{action}", // URL with parameters
new { controller = "YourController", action = "Test" } // Parameter defaults
);
}
现在,如果您输入:
你的控制器/api/测试
(注意路径中是否存在“api”)
它将呼吁:
控制器=你的控制器
动作=测试
您可以在此中找到有关路由的更多信息。同一控制器中还有其他方法仍然需要从根{controller}/{method}级别调用。那会把事情搞砸吗?另外,是的,我可以使用WebAPI,但我对它不太熟悉。那仍然有效。两个不同的路径可以在同一个控制器中调用动作方法。好的,我想我明白了。我已经为/api/{controller}/{action}/{id}设置了一个路由,但是当我尝试访问它时,我得到了“没有找到与名为'Listing'的控制器匹配的类型”。您是否有一个从'controller'继承的public
ListingController
类?是的,尽管它位于子目录中。但我认为这不重要。