我在MVC示例项目下有以下路由配置:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute("", "X{controller}/{action}",
new { controller = "Customer", action = "List" });
routes.MapRoute("MyRoute", "{controller}/{action}",
new { controller = "Home", action = "Index" });
}
}
我将所有控制器(Home,Customer)重定向到显示当前控制器和操作名称的同一视图。
因此,对于URL http://localhost:5O44O/XCustomer
,我有以下输出:
控制器是:客户
行动是:列表
我希望对于网址http://localhost:5O44O/X
我应该有相同的输出......但事实并非如此......
2>'/'应用程序中的服务器错误。无法找到资源 描述:HTTP 404.资源你 正在寻找(或其中一个依赖)可能已被删除, 更改名称,或暂时不可用。请查阅 以下URL并确保拼写正确。
请求的网址:/ X
为什么?我首先放置了“X”条件,所以我应该获得Customer和List的默认替换?!
答案 0 :(得分:3)
您正在接收404 error
,因为您没有XController
。如果你有,你会收到路线:http://localhost:5O44O/XX
routes.MapRoute("", "X{controller}/{action}"
- 这只是生成一系列路线的一种语法。而且它没有你所期望的行为。
所有操作都应该在这里完成:
new { controller = "Customer", action = "List" });
如果您想拥有这样的路线:http://localhost:5O44O/X/List
,您需要按如下方式编写MapRoute:
routes.MapRoute("name", "X/{action}",
new { controller = "Customer", action = "List" });
你甚至可以写:
routes.MapRoute("name", "HelloBro",
new { controller = "Customer", action = "List" });
它将为http://localhost:5O44O/HelloBro
List action
Customer controller
返回路线{{1}}