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

ASP.NET/C#中按钮无法触发后台代码问题求助

解决ASP.NET按钮无法触发后台代码的问题

错误原因

你遇到的Uncaught ReferenceError: PlayerHit is not defined报错,核心问题是混淆了前端事件和服务器端事件的绑定逻辑:

  • 普通HTML <button> 的onclick属性是用来绑定前端JavaScript函数的,浏览器会在前端代码里查找PlayerHit,但你的PlayerHit是后台C#方法,自然找不到。
  • 就算给普通按钮加了runat="server",直接写onclick="PlayerHit"也不对,因为服务器端按钮的事件绑定属性不是这个。

正确实现方式

方式1:使用ASP.NET服务器控件按钮

直接用<asp:Button>控件,注意事件属性是**OnClick(首字母大写)**,对应后台的C#方法:

<asp:Button runat="server" ID="butAddPlayerCard" OnClick="PlayerHit" Text="Hit2" />

后台方法保持现有签名即可(public或protected都可以,推荐用protected):

protected void PlayerHit(object sender, EventArgs e)
{
    DeckAction deckAction = new DeckAction();
    deckAction.AddCard(deck, PlayersHand);

    foreach (var item in PlayersHand)
    {
        if (item.Values == 0)
        {
            var cardValue = item.Values;
        }
    }
}

方式2:使用HTML按钮绑定服务器事件

如果想用普通<button>标签,要改用**OnServerClick**属性绑定后台方法,而不是onclick:

<button ID="Button2" OnServerClick="PlayerHit" runat="server" class="btn btn-primary btn-light">Hit</button>

这个写法同样会触发后台的PlayerHit方法。

额外注意点

  • 确保ASPX页面顶部@Page指令的CodeBehind或CodeFile属性,正确指向后台代码文件
  • 后台方法的访问修饰符不能是private,否则页面无法调用该方法

内容的提问来源于stack exchange,提问作者F. Price

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:37:09