You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在@Url.Action中传递参数?现有跳转按钮代码需扩展

给跳转按钮添加参数的解决方案

嗨,我来帮你搞定给这个跳转按钮添加参数的问题!你原来的代码运行正常,说明基础的跳转逻辑没问题,现在只需要在Url.Action里加上参数就行,分两种常见场景给你举例:

1. 传递路由参数(适合URL路径形式,比如 /ControllerName/ActionName/123

如果你的后端Action方法是接收路由参数的,比如这样:

public ActionResult ActionName(int id)
{
    // 你的业务逻辑
}

那你可以直接在Url.Action的第三个参数里传入匿名对象来指定参数,修改后的按钮代码如下:

<button type="button" class="btn btn-inverse btn-danger" onclick="window.location.href='@Url.Action("ActionName", "ControllerName", new { id = 123 })';">
  跳转(带路由参数)
</button>

这里的123可以换成动态值,比如模型属性Model.Id或者页面里的变量,Razor会自动帮你生成正确的URL路径。

2. 传递查询字符串参数(适合?key=value形式,比如 /ControllerName/ActionName?id=123&name=test

要是你需要传递多个参数,或者想用查询字符串的形式传参,同样用匿名对象添加多个键值对就行:

<button type="button" class="btn btn-inverse btn-danger" onclick="window.location.href='@Url.Action("ActionName", "ControllerName", new { id = 123, name = "test" })';">
  跳转(带查询参数)
</button>

生成后的URL会自动拼接成带查询字符串的格式,后端Action可以直接通过参数名接收这些值。

另外给你个小优化建议:你原来代码里的@("window.location.href='" + @Url.Action(...) +"'")可以简化成直接写window.location.href='@Url.Action(...)',因为Razor会直接解析@Url.Action的输出,不需要额外的字符串拼接,代码会更简洁好读~

内容的提问来源于stack exchange,提问作者Sribin

火山引擎 最新活动