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

CRUD场景下:如何从Razor向JavaScript函数传递参数?

解决Razor向JavaScript传递值的问题

方式一的修正

你的方式一代码存在语法错误(多了冗余的" />),且如果@item.Id是字符串类型,需要用引号包裹,否则JavaScript会把它当作未定义变量解析。修正后代码:

Razor代码:

<input type="button" class="btn btn-primary mx-1" value="Delete" onclick="deletePill('@item.Id')" />

JavaScript函数:

function deletePill(Id) {
    console.log(Id);
}

如果@item.Id是数字类型,不需要引号,直接写deletePill(@item.Id)即可。

方式二的修正

方式二里你给按钮加了data属性,但函数既没接收参数,也没主动读取该属性的值。修正方案有两种:

方案1:调用时直接传参

修改Razor代码,把data属性的值作为参数传入函数:

<input type="button" class="btn btn-primary mx-1" value="Delete" onclick="deletePill(this.getAttribute('data'))" />

JavaScript函数保持原写法即可。

方案2:函数内读取标准data-*属性

推荐使用HTML标准的data-*属性(比如data-id),再在函数里通过元素获取值:

<input type="button" class="btn btn-primary mx-1" value="Delete" data-id="@item.Id" />
// 用事件监听替代内联onclick(更规范)
document.querySelector('.btn-primary').addEventListener('click', function() {
    const id = this.dataset.id;
    console.log(id);
});

更规范的写法(推荐)

避免使用内联onclick,改用事件委托或批量绑定事件,代码更易维护,也能避免引号嵌套的问题:

Razor代码:

<input type="button" class="btn btn-primary mx-1 delete-btn" value="Delete" data-id="@item.Id" />

JavaScript代码:

// 给所有删除按钮绑定点击事件
document.querySelectorAll('.delete-btn').forEach(btn => {
    btn.addEventListener('click', function() {
        const id = this.dataset.id;
        console.log(id);
        // 此处可编写删除逻辑
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:25:24