Asp.net mvc ActionResult方法的更长路径

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

在MVC4中,给一个方法一个比/{controller}/{method}更长的路由是否可能


也就是说,我怎么可能有一个方法“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
类?是的,尽管它位于子目录中。但我认为这不重要。