我注意到我的MVC项目中有些奇怪。我实际上回到了vanilla版本试用它并发现以下内容(最后一个列表项是我对项目的唯一添加,除了控制器中的操作 Test ,只返回一个空查看的实例)效果很好。
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
<li>@Html.ActionLink("Test", "Test", "Home")</li>
</ul>
但是,当我按如下方式将动作添加到动作链接时,我收到错误。 仍然有效,但现在VS备注,当我查看备注时,它会询问我是否要创建新控制器共享和操作测试
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
<li>@Html.ActionLink("Test", "Test", "Home", new { @style = "color: blue;" })</li>
</ul>
为什么会这样?这真的是一个真正的问题吗?
答案 0 :(得分:4)
该方法有a finite number of overloads个。你的工作&#34;版本很可能会解析为this one,它明确地引用了&#34; Home&#34;控制器如预期的那样:
ActionLink("Test", "Test", "Home")
然而,你的&#34;没有工作&#34;版本似乎可以合理地解决this one,其中&#34;工作&#34;对于HTML属性,但更改了"Home"
在这种情况下的含义,将其视为路由值(可能不会被解析为任何有用的东西并被忽略):
ActionLink("Test", "Test", "Home", new { @style = "color: blue;" })
它是否真的在客户端链接中生成正确的路由?如果是这样,我认为这是一个幸运的巧合,但不会依赖它。
你可能正在寻找this overload,看起来像这样:
ActionLink("Test", "Test", "Home", null, new { @style = "color: blue;" })