我可以在MVC中使用这样的静态路由吗?

时间:2013-01-08 13:51:51

标签: asp.net-mvc controller action routes

在我的网络应用程序中,我将有一条路线:

http://server/requests/info/{id}-{guidPart} (a string)

所以我认为我很聪明并且做了一条路,所以我做了:

routes.MapRoute(
    name: "Info",
    url: "{controller}/{action}/{id}-{guidPart}",
                defaults: new { controller = "Requests", action = "Info", id = 0, guidPart = "" }
);

然后我想,为什么我需要指定默认值,为什么不将它全部修复,除了最后一部分:

routes.MapRoute(
    name: "Info",
    url: "requests/info/{id}-{guidPart}"
);

但是当我去一个网址时:

http://server/requests/info/123-abc123

失败并说:

未找到404资源。

关于我做错了什么提示?

1 个答案:

答案 0 :(得分:1)

您可以拥有静态路由,但仍需要指定默认路由到哪个Controller和Action。

routes.MapRoute(
name: "Info",
url: "requests/info/{id}-{guidPart}",
defaults: new { controller = "Requests", action = "Info", id = 0, guidPart = ""}); 

这个和上面的默认值之间的区别是这个UriTemplate只会尝试匹配一个以“requests / info /”开头的Uri