我有这样一个控制器方法:为什么我的ActionLink不起作用?
public ActionResult Foo2(int uId)
{
return View();
}
现在我加了一个动作连结此:
@Html.ActionLink("Test", "Foo2", "Main", new { uId = 12 })
但这样的结果,当我点击它:
.../Main/Foo2?Length=8
为什么这不起作用?
我有这样一个控制器方法:为什么我的ActionLink不起作用?
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)
另请参见this question。
在那里,我得到:。... /主/ foo2的,但UID是缺少:( – gurehbgui
@gurehbgui看到编辑'null'应被传递给最后一个参数'htmlAttributes'。 – CodeCaster
现在它的工作,谢谢 – gurehbgui
根据另一Stackoverflow Question你应该试试这个命令:
@Html.ActionLink("Test", "Foo2", "Main", new { uId = 12 }, null)
这是工作,谢谢 – gurehbgui
@gurehbgui不客气。 –