gpt4 book ai didi

c# - 为什么我的 ActionLink 不工作?

转载 作者:太空狗 更新时间:2023-10-29 20:10:30 24 4
gpt4 key购买 nike

我有一个这样的 Controller 方法:

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>

希望这能稍微澄清一下。

关于c# - 为什么我的 ActionLink 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com