【发布时间】:2023-04-08 15:06:02
【问题描述】:
这可能是一个简单的问题,但我无法让它发挥作用。
我在 RouteConfig 中指定了这条路线
routes.MapRoute(
name: "DefaultSiteRoute",
url: "{accountid}/{hostname}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, accountid = UrlParameter.Optional, hostname = UrlParameter.Optional }
);
对于这样的网址,它可以正常工作
/123456/www.test.com/
或者这个
/123456/www.test.com/Controller/Action
但它无法应付这个
/123456/www.test.com
我得到一个 IIS 404
奇怪的是,如果我使用默认控制器和操作(即 Home/Index)为该路由调用 Url.Action,它会创建一个不带斜杠的 url,然后它就无法识别。我真的需要它来使用和不使用斜杠。
【问题讨论】:
-
所有链接都需要斜杠吗?
-
我不需要 它,但鉴于
Url.Action方法生成的链接没有斜杠,这将是一个问题 -
如果将 {action} 参数设为可选会发生什么?
-
@CodeART 给它一个默认值 (
Index) 应该已经使它成为“可选”。 -
@HenkMollema 是正确的,该路由中的所有参数都是可选的,但是 2 指定了默认值
标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing