如何在 jQuery 调用的 CodeBehind 中执行事件?
Posted
技术标签:
【中文标题】如何在 jQuery 调用的 CodeBehind 中执行事件?【英文标题】:How to execute an event in CodeBehind being called by jQuery? 【发布时间】:2020-04-15 04:45:32 【问题描述】:我在 Aspx 中有这段代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="WebSite.View.Index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src="Scripts/jquery-3.4.1.min.js"></script>
<title>Projeto para Testes</title>
</head>
<body>
<form id="form1" runat="server">
<div id="dvEventos" class="dvEventos">
<h1>Apenas um teste</h1>
<asp:Button ID="btnEventoCsharp" CssClass="btnEventoCsharp" Text="Evento C#" OnClick="btnEventoCsharp_Click" runat="server" />
<asp:Button ID="btnEventoCsharpByJS" CssClass="btnEventoCsharpByJS" Text="Evento C# by JS" OnClick="btnEventoCsharpByJS_Click" runat="server" />
<button id="btnEventoJqueryClick" class="btnEventoJqueryClick">Evento C# by Jquery</button>
<button id="btnEventoJquery" class="btnEventoJquery">Evento Jquery</button>
</div>
</form>
</body>
<script>
$(document).ready(function ()
CarregaEventosIndex();
);
function CarregaEventosIndex()
$('.btnEventoJquery').off('click').on('click', function ()
alert('Event click by Jquery');
);
$('.btnEventoJqueryClick').off('click').on('click', function ()
$("input[id*=btnEventoCsharpByJS]").click();
);
</script>
</html>
我的文件CodeBehind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebSite.View
public partial class Index : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
protected void MetodoSemParametroChamadoEventosDiferentes()
string passeiAqui = "sem parametro";
string evento = passeiAqui;
/// Evento de Teste
protected void btnEventoCsharpByJS_Click(object sender, EventArgs e)
MetodoSemParametroChamadoEventosDiferentes();
我正在使用 Webforms,我需要通过 jQuery 调用 CodeBehind 事件,在本例中使用此 btnEventoJqueryClick 按钮。但是,如果我使用此代码 $ ("input [id * = btnEventoCsharpByJS]"),则有一个。点击 ();通过浏览器控制台,在CodeBehind中使用断点,我意识到事件被调用了,但是点击按钮并没有调用事件。我究竟做错了什么?或者,如何通过 jQuery 以不同的方式调用 CodeBehind 事件?
【问题讨论】:
要检查的是网络选项卡。当您单击按钮时,查看是否有任何网络流量正在发送到您的服务器并验证响应。比较点击和控制台生成的点击之间的网络流量。另一个可能的原因是 ID 冲突。确保页面或母版页上没有任何其他 ID 冲突的按钮。祝你好运! 你试试这个$("#<%=btnEventoCsharpByJS.ClientID %>").click();
而不是$("input[id*=btnEventoCsharpByJS]").click();
【参考方案1】:
您可以使用ClientID
获取由 ASP.NET 生成的 HTML 标记的控件 ID。
$("input[id*=btnEventoCsharpByJS]").click();
应该是:
$("#<%=btnEventoCsharpByJS.ClientID %>").click();
这样就可以触发 CodeBehind 方法btnEventoCsharpByJS_Click
【讨论】:
以上是关于如何在 jQuery 调用的 CodeBehind 中执行事件?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET CodeBehind 无法识别 TinyMCE 文本区域更改
如何在 Rider 中创建 XAML + CodeBehind 对?
bootstrap modal popup c# codebehind
如何在listview - WPF MVVM上拖放后更新codeBehind中的ObservableCollection