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

在Razor视图中创建可传递选中模型至控制器的链接按钮

在MVC Razor视图中传递选中项数据到控制器

首先,你原代码里的链接标签有个小问题,<a>标签没有正确闭合,应该改成</a>哦。

回到你的问题,在ASP.NET MVC(或Core)里,我们可以利用Tag Helper的路由属性轻松传递参数到控制器方法,这里有几种常用方案,你可以根据需求选择:

1. 推荐:传递唯一标识(最安全简洁)

如果你的depFlight模型有一个唯一ID(比如FlightId),这是最优方案——只传递ID,然后在控制器里通过ID从数据源获取完整航班信息,既避免URL暴露过多数据,也更符合MVC的设计逻辑。

修改你的链接代码:

<a asp-action="BookingForm" asp-route-flightId="@fcoll.depFlight.FlightId">Choose</a>

然后在控制器中添加对应的方法接收参数:

public IActionResult BookingForm(int flightId)
{
    // 根据flightId从数据库/服务中获取对应航班信息
    var flight = _flightService.GetFlightById(flightId);
    // 处理预订逻辑,比如返回表单视图并传递数据
    return View(flight);
}

2. 直接传递多个字段(适合简单场景)

如果确实需要直接传递多个字段(比如出发地、目的地等),可以用多个asp-route-*属性,每个属性对应控制器方法的一个参数:

修改链接:

<a asp-action="BookingForm" 
   asp-route-depLocation="@fcoll.depFlight.Location"
   asp-route-depAirport="@fcoll.depFlight.Airport"
   asp-route-arriveLoc="@fcoll.depFlight.ArriveLoc"
   asp-route-tarif="@fcoll.depFlight.Tarif">Choose</a>

控制器方法对应参数:

public IActionResult BookingForm(string depLocation, string depAirport, string arriveLoc, decimal tarif)
{
    // 直接使用传递的参数构建预订视图模型
    var viewModel = new BookingViewModel
    {
        DepLocation = depLocation,
        DepAirport = depAirport,
        // 其他字段赋值...
    };
    return View(viewModel);
}

3. 批量传递参数(适合多参数场景)

如果需要传递的参数很多,可以用asp-all-route-data属性,把参数包装成字典对象:

先在Razor视图里定义路由数据字典:

@{
    var flightRouteData = new Dictionary<string, string>
    {
        { "flightId", fcoll.depFlight.FlightId.ToString() },
        { "depTime", fcoll.depFlight.Time.ToString("yyyy-MM-dd HH:mm") },
        { "arriveTime", fcoll.depFlight.ArriveTime.ToString("yyyy-MM-dd HH:mm") },
        { "tarif", fcoll.depFlight.Tarif.ToString() }
    };
}

再使用链接:

<a asp-action="BookingForm" asp-all-route-data="flightRouteData">Choose</a>

控制器方法同样接收对应的参数即可。

注意事项

  • 尽量避免在URL中传递敏感数据(比如用户隐私信息),用唯一ID查询是更安全的方式。
  • 控制器方法的参数名称要和asp-route-*的后缀保持一致(比如asp-route-flightId对应参数int flightId),大小写不敏感但建议统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:43:12