我有這樣一個控制器方法:爲什麼我的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不客氣。 –