为什么我的ActionLink不起作用
本文关键字:不起作用 ActionLink 我的 为什么 | 更新日期: 2023-09-27 18:15:46
我有一个类似的控制器方法:
public ActionResult Foo2(int uId)
{
return View();
}
现在我添加了一个操作链接:
@Html.ActionLink("Test", "Foo2", "Main", new { uId = 12 })
但当我点击它时,结果是:
.../Main/Foo2?Length=8
为什么这不起作用?
您使用了错误的ActionLink
方法重载。您应该使用:
@Html.ActionLink("Test", "Foo2", "Home", new { uId = 12 }, null)
此重载将把new { uId = 12 }
解释为路由值,而不是HTML属性。使用的重载确实将new { uId = 12 }
解释为具有操作链接的TML属性的对象。通过调用上面指定的重载,您传入null
作为第五个参数,它现在将用于HTML属性,并将您的对象作为路由值。
通过查看渲染的内容,我们可以很容易地看到正在发生的事情:
@Html.ActionLink("Test", "Foo2", "Home", new { uId = 12 })
// Renders: <a href="/Home/Foo2?Length=4" uId="12">Test</a>
@Html.ActionLink("Test", "Foo2", "Home", new { @class = "test-class" })
// Renders: <a class="test-class" href="/Home/Foo2?Length=4">Test</a>
@Html.ActionLink("Test", "Foo2", "Home", new { uId = 12 }, null)
// Renders: <a href="/Home/Foo2?uId=12">Test</a>
@Html.ActionLink("Test", "Foo2", "Home", new { uId = 12 }, new { @class = "test-class" })
// Renders: <a class="test-class" href="/Home/Foo2?uId=12">Test</a>
希望这能稍微澄清一下。
MVC调用了错误的重载,因为它有几个方法具有相同的参数计数。试试这个:
@Html.ActionLink("Test", "Foo2", "Main", new { uId = 12 }, null)
另请参阅此问题。
根据另一个堆栈溢出问题,您应该尝试以下顺序:
@Html.ActionLink("Test", "Foo2", "Main", new { uId = 12 }, null)