Asp.net mvc 4 ASP.NET MVC4 ActionLink显示;索引“;链接中

Asp.net mvc 4 ASP.NET MVC4 ActionLink显示;索引“;链接中,asp.net-mvc-4,Asp.net Mvc 4,通常,路由到任何控制器的索引操作的ActionLink将省略链接中的“索引”,即http://localhost:8080/Controller/id。在我的例子中,我试图将一个字符串作为ID传递给Eta控制器的索引操作。代码如下: @Html.ActionLink(item.Name,“Index”,“Eta”,新的{id=item.Name},null) 结果链接显示为:http://localhost:8080/Eta/Index/some-输入字符串而不是http://localhost

通常,路由到任何控制器的索引操作的ActionLink将省略链接中的“索引”,即
http://localhost:8080/Controller/id
。在我的例子中,我试图将一个字符串作为ID传递给Eta控制器的索引操作。代码如下:

@Html.ActionLink(item.Name,“Index”,“Eta”,新的{id=item.Name},null)

结果链接显示为:
http://localhost:8080/Eta/Index/some-输入字符串
而不是
http://localhost:8080/Eta/some-输入字符串

此RouteConfig与File>New Project>MVC4应用程序中的完全相同。

在URI中包含“索引”作为操作是必要的,因为您在字符串中包含路由值

如果不指定操作,路由值将被解释为操作

例如:

http://localhost:8080/Etc/abc123
^    ^
控制器|
|
行动(oops)

对您来说,
abc123
是一个有意义的参数。对于路由引擎来说,它是一个操作。

MVC4模板中的标准路由是{Controller}/{action}/{id},因此您需要将其更改为{Controller}/{id},并使用默认的action=“Index”

这是不可能的。路由引擎如何知道名为1的操作和id之间的区别?如果配置为{controller}/{id}大于第二个参数的路由将始终被解释为{id},那么您将永远不会点击/controller/action。问题中的第二个参数将始终是IDI,作者试图使用“Index”作为默认值从链接中删除操作。我向他展示了一种方法。这可能是错误的方式,但我对他的应用程序一无所知,我只是回答了这个问题。我想你误解了。OP希望只针对默认情况执行操作(默认情况下通常会发生这种情况),但要让操作包括所有控制器的所有其他情况。但是,根据你的理解,这将是正确的答案。谢谢!想想看,这很明显。