You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从View向Controller传递变量?按钮传行号至Controller问询

实现从Edit按钮向Controller传递行号的方案

没问题,我来帮你搞定这个按钮传值的事儿!要实现点击Edit按钮把行号(Line)传给Controller,进而找到对应的Driver进行编辑,咱们可以从视图层和控制器层两部分来处理:

1. 视图层:给每个Edit按钮绑定行号参数

假设你在List视图里是通过遍历Driver列表来渲染每一行数据的,那可以用两种常见方式来实现传值:

方式一:使用Html.ActionLink生成跳转链接

这是最简单的方式,直接生成带参数的GET请求链接:

@model List<Drivers>

<table>
    <thead>
        <tr>
            <th>行号</th>
            <th>驾照号</th>
            <th>姓名</th>
            <!-- 其他表头 -->
            <th>操作</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var driver in Model)
        {
            <tr>
                <td>@driver.Line</td>
                <td>@driver.NumberLicens</td>
                <td>@driver.FirstName @driver.LastName</td>
                <!-- 其他列内容 -->
                <td>
                    @* 这里把driver.Line作为参数传给Controller的Edit方法 *@
                    @Html.ActionLink("Edit", "Edit", "DriverTaxi", new { line = driver.Line }, null)
                </td>
            </tr>
        }
    </tbody>
</table>

方式二:使用表单按钮(适合POST请求场景)

如果需要用POST方式传值,可以用隐藏字段来携带行号:

@foreach (var driver in Model)
{
    <tr>
        <!-- 其他列 -->
        <td>
            @using (Html.BeginForm("Edit", "DriverTaxi", FormMethod.Post))
            {
                <input type="hidden" name="line" value="@driver.Line" />
                <button type="submit" class="btn btn-primary">Edit</button>
            }
        </td>
    </tr>
}

2. 控制器层:接收行号并找到对应的Driver

在你的DriverTaxiController里,添加一个Edit方法来接收行号参数,然后从静态列表中筛选出要编辑的Driver:

static List<Drivers> Driver = new List<Drivers>();

// GET: DriverTaxi/Edit
public ActionResult Edit(int line)
{
    // 根据行号找到对应的Driver
    var targetDriver = Driver.FirstOrDefault(d => d.Line == line);
    
    // 如果没找到,返回404页面
    if (targetDriver == null)
    {
        return HttpNotFound("未找到对应行号的Driver");
    }
    
    // 将找到的Driver传给编辑视图
    return View(targetDriver);
}

// 如果用POST方式,需要添加POST版本的Edit方法
[HttpPost]
public ActionResult Edit(int line, Drivers updatedDriver)
{
    // 这里处理更新逻辑,比如找到原Driver并替换属性
    var targetDriver = Driver.FirstOrDefault(d => d.Line == line);
    if (targetDriver != null)
    {
        targetDriver.NumberLicens = updatedDriver.NumberLicens;
        targetDriver.FirstName = updatedDriver.FirstName;
        // 其他属性更新
    }
    // 重定向回列表页
    return RedirectToAction("List");
}

小提醒

注意你现在用的是静态List来存储Driver数据,这种方式在多用户访问的场景下会有数据共享、并发修改的问题,只适合本地测试。如果是生产环境,建议改用数据库(比如EF Core)来持久化数据哦!

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:38:34