2016-04-25 49 views
2

在我的演示asp.net mvc应用程序中,我正面临路由问题。即 带有除actionresult或其子类以外的返回类型的操作方法,如果它们的路由定义不是作为第一个和其他路由定义之前放置,则不会被调用。即返回类型为void/string/others等的动作方法只有在它们的routes.routemap放置在开头时才会被调用。 为前如果我有和行动方法说asp.net MVC路由指令

public string method1() 
{ 
} 

控制器CONT1内,则只有当我把路由代码

routecollection.maproute("route1","{controller}/{action}",new {controller="cont1",action="method1"} 

在第一其它routecollection.maproute之前获取调用。否则它不会被调用。请让我知道背后的原因。

+2

因为总是执行第一条匹配路线(您显示的“route1”路线与“Default”路线相同) –

+0

as @StephenMuecke表示总是执行第一条匹配路线,我不知道如何放置路线,也许这篇文章将有助于你http://www.codeproject.com/Articles/624181/Routing-Basics-in-ASP-NET-MVC – KanisXXX

+1

这是一个很好的做法,返回你的字符串结果,包装在ContentResult对象,其中也将解决您的路由问题。有关于这个问题的详细讨论[这里](http://stackoverflow.com/questions/18482293/asp-net-mvc-contentresult-vs-string)。 –

回答

1

默认路由配置应在路线配置的结尾始终。由于路由配置将解析匹配的配置,它将接受并路由到该路径。因此,如果您在开始时指定默认配置,它将始终匹配并路由到该路径。