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

如何在JavaScript中获取ASP.NET LinkButton的CommandArgument值

问题原因

你的代码存在两个核心错误:

  • 调用OnEditClick时没有传递任何参数,导致函数中定义的s和e参数均为undefined,自然无法读取e.CommandArgument属性
  • CommandArgument是ASP.NET服务器控件的专属属性,仅存在于服务器端的事件处理逻辑中,不会传递到前端JavaScript的事件对象里,因此前端直接读取e.CommandArgument本身就不成立
解决方法

推荐最简单的实现方案:直接将绑定的Id值作为参数传入JavaScript函数即可,无需额外操作DOM:

1. 修改LinkButton的OnClientClick属性

<asp:LinkButton runat="server" ID="lnkEditButton"
    OnClientClick='<%# "OnEditClick(" + Eval("Id") + ")" %>'
    Text="Edit" CommandName="EditDocument"
    CommandArgument='<%#Eval("Id")%>' />

注意这里OnClientClick的外层引号要用单引号,避免和内部的双引号冲突

2. 调整JavaScript函数逻辑

function OnEditClick(docId)
{
    console.log('on edit click fired')
    var values = [];
    values[0] = "Enter document description";
    values[1] = "Edit";
    values[3] = docId;
    console.log('slowly but surely getting there from here... '+ values[3])
}

如果你的Id是字符串类型,需要给参数加引号,修改OnClientClick为:

OnClientClick='<%# "OnEditClick(\"" + Eval("Id") + "\")" %>'
可选方案:传递DOM元素获取属性

如果你需要获取按钮的更多属性,也可以将当前元素本身传入函数:

OnClientClick="OnEditClick(this)"

然后JS中读取元素的属性即可(ASP.NET会将CommandArgument渲染为元素的commandArgument自定义属性):

function OnEditClick(btn)
{
    console.log('on edit click fired')
    var docId = btn.getAttribute('commandArgument');
    var values = [];
    values[0] = "Enter document description";
    values[1] = "Edit";
    values[3] = docId;
    console.log('slowly but surely getting there from here... '+ values[3])
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:39:02