C# 简单MVC路由配置正在从URL截断操作

C# 简单MVC路由配置正在从URL截断操作,c#,asp.net-mvc,routes,C#,Asp.net Mvc,Routes,就在我确信自己理解了路由的功能时,当我去更改默认路由时,这个问题突然出现了 以下是整个配置(注册表项): 页面上有一个链接是使用@Html.ActionLink(“贷款管理”、“索引”、“认证”、routeValue:null、htmlAttributes:new{})生成的 出于某种原因,该函数的输出是一个锚元素,其href指向“/Certification”,而它应该是“/Certification/Index”。其他链接似乎生成的很好(没有“索引”作为操作的链接) 为什么要从认证url截断

就在我确信自己理解了路由的功能时,当我去更改默认路由时,这个问题突然出现了

以下是整个配置(注册表项):

页面上有一个链接是使用
@Html.ActionLink(“贷款管理”、“索引”、“认证”、routeValue:null、htmlAttributes:new{})生成的

出于某种原因,该函数的输出是一个锚元素,其href指向
“/Certification”
,而它应该是
“/Certification/Index”
。其他链接似乎生成的很好(没有“索引”作为操作的链接)

为什么要从认证url截断“索引”

routes.MapRoute(
      name: "Default",
      url: "{controller}/{action}",
      defaults: new { controller = "Home", action = "Index" } \\right here
  );
这就是为什么<代码>索引是默认值,因此如果您取消某个操作,则假定为
索引

http://localhost/Certification


http://localhost/Certification/Index


功能相同。

我不确定我是否理解您的意思。你是说
Html.ActionLink
忽略了“索引”,即使我将其传递给函数,因为它是默认值,因此不会添加它?这对我的javascript代码很重要,因为到操作的相对链接无法正常运行,因为它们正在替换“认证”而不是应该存在的“索引”。请原谅我听起来有些刺耳,但听起来像是A)你确实理解我,但你对这个答案并不兴奋,B)javascript而不是路由有问题。为什么要用javascript重写URL?如果你需要呈现一个url,就让
@Html.ActionLink
助手帮你做吧。如果你不是故意这么做的话,我会原谅你的咆哮;事实上,没有理由怀有敌意。我的解决方案是将“索引”重命名为其他内容。我的javascript代码很好,感谢您的关注。或者,如果这确实是一个障碍,只需将默认操作更改为错误页面(或404)。然后,
Certification/Index
路由将被强制为显式。@Whoa,没有恶意。当你回答“我不确定我是否理解你”时,你清楚地理解了b/c。我确实想提醒你不要使用URL,而不是让MVC处理路由。这些助手就在那里,所以你不必重新发明任何轮子或引入错误风险(你刚刚经历过)。也许你有这样做的正当理由,在这种情况下,我想听听为什么。
routes.MapRoute(
      name: "Default",
      url: "{controller}/{action}",
      defaults: new { controller = "Home", action = "Index" } \\right here
  );