1

我在 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我有以下输出:

控制器是:客户
动作是:列表

我希望对于 URL,http://localhost:5O44O/X我应该有相同的输出......但事实并非如此......

“/”应用程序中的服务器错误。

无法找到该资源。
说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的网址:/X

为什么?我首先放置了“X”条件,所以我应该使用 Customer 和 List 获得默认替换?!

4

1 回答 1

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/HelloBroList action路线Customer controller

于 2013-09-23T16:10:28.430 回答