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

ASP.NET MVC中Ajax向控制器传参时TransactionNumber未定义问题

问题分析与解决

你遇到的问题根源有两个:

  • 点击按钮调用get_details时,只传了id,没传TransactionNumber,导致函数第二个参数未定义
  • URL里的参数格式错误,控制器接收的参数是TN,但你写的是?=,没有指定参数名

修正步骤:

1. 前端DataTables按钮渲染部分

render函数除了当前列的data(也就是id),还能拿到整行数据的full参数,用它获取TransactionNumber,然后传给get_details:

{
    data: "id", 
    "render" : function(data, type, full)
    {
        return '<button class="btn btn-success" onclick="get_details(' + data + ', \'' + full.TransactionNumber + '\')"> Details </button>';
    }
}

注意给TransactionNumber加单引号,避免字符串类型值引发语法错误。

2. 修正get_details函数的URL参数

把?=改成?TN=,和控制器的参数名TN对应:

function get_details(id, TransactionNumber)
{
    window.location.href = '/Approver/Details/' + id + '?TN=' + TransactionNumber;
}

3. 控制器参数优化(可选)

可以给参数添加[FromQuery]特性,明确指定从URL查询字符串获取参数,逻辑更清晰:

public ActionResult Details(int Id, [FromQuery]string TN)
{
    tbl_FSEWeb_Transaction tbl_FSEWeb_Transaction = db.tbl_FSEWeb_Transaction.Find(Id);
    return View(tbl_FSEWeb_Transaction);
}

修改完成后,TransactionNumber就能正确传递到控制器的TN参数中了。

内容的提问来源于stack exchange,提问作者bran.tyler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:20:50