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

ASP.NET MVC中如何通过ActionLink将报表TITLE传递到评论新增页

解决方案

步骤1:修改报表列表页的ActionLink参数

你需要在Add comment的ActionLink中新增路由参数,把当前行的报表ID和TITLE传递给评论控制器的Create动作,注意匹配ActionLink的重载方法,末尾加null作为htmlAttributes的占位参数:

@Html.ActionLink("Add comment", "Create","COMMENTs", new { reportId = item.REPORT_ID, reportTitle = item.TITLE }, null)

步骤2:修改COMMENTs控制器的Create(GET)方法

在控制器的新增评论入口方法中接收传递过来的参数,把报表标题和预选中的报表ID传递给新增页视图:

public ActionResult Create(int reportId, string reportTitle)
{
    // 预选中当前报表作为评论所属报表,替换你原来生成下拉选项的逻辑即可
    ViewBag.ID_REPORTE = new SelectList(你的数据库上下文.reports, "REPORT_ID", "TITLE", reportId);
    // 存储报表标题给视图调用
    ViewBag.ReportTitle = reportTitle;
    return View();
}

步骤3:在Create_Comments.HTML中使用传递过来的报表标题

你可以直接在视图中展示当前要添加评论的报表标题,也可以根据业务需求把标题存入隐藏域随表单提交:

<!-- 直接展示标题 -->
<p>当前评论所属报表:*@ViewBag.ReportTitle*</p>

<div class="form-group">
    @Html.LabelFor(model => model.ID_REPORTE, "ID_REPORTE", htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("ID_REPORTE", null, htmlAttributes: new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.ID_REPORTE, "", new { @class = "text-danger" })
    </div>
</div>

<!-- 如果不需要用户修改所属报表,可以直接把下拉替换为隐藏域,简化操作 -->
<!-- @Html.HiddenFor(model => model.ID_REPORTE, new { @Value = ViewBag.ID_REPORTE.SelectedValue }) -->

可选优化方案

如果你的项目规范不推荐使用ViewBag,也可以自定义评论新增页的ViewModel,新增ReportTitle和ReportId字段,在控制器中给ViewModel赋值后传递给视图,类型安全更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:54:03