2

在我的 Web 应用程序中,我将有如下路线:

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 找不到资源。

关于我做错了什么的任何提示?

4

1 回答 1

1

你可以有一个静态路由,但你仍然必须指定默认路由到哪个控制器和动作。

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

这与上面的默认值之间的区别在于,此 UriTemplate 只会尝试匹配以“requests/info/”开头的 Uri

于 2013-01-08T13:57:41.613 回答