【问题标题】:How does ASP.NET raise events on the client?ASP.NET 如何在客户端引发事件?
【发布时间】:2017-05-31 10:56:00
【问题描述】:

例如,当用户单击<button> 时,我知道服务器端的事件处理程序将执行。
但是如何在客户端引发事件?由于初始页面(使用GET)在客户端纯粹是,那么事件是由 引发的吗?

如果是,是否意味着.aspx会先在客户端自动生成代码?

例如,我在 .aspx 页面上有一个 按钮:

 <asp:Button ID="btnCalculate" runat="server" Text="Calculate" Width="122px" OnClick="btnCalculate_Click" />

OnClick 表示这是一个 事件,但我在哪里可以找到适用的 代码?

【问题讨论】:

  • 视情况而定,您能否发布带有一些示例的代码?这将有助于回答您的问题。
  • 我们在谈论什么样的按钮?它是&lt;form&gt; 提交按钮吗?然后是post或者get请求(由form标签指定),是&lt;button&gt;标签吗?然后很可能涉及到 Javascript。您的标题的答案是:ASP.NET 不会在客户端引发任何事件,您的浏览器会通过解析客户端“代码”(html、javascript、...)来实现。
  • @RicardoPontual 我已经编辑了我的帖子以包含一个示例

标签: html javascript javascript asp javascript javascript javascript c# asp.net .net


【解决方案1】:

&lt;asp:{Control&gt;}&gt; 都是服务器端控件,您看到的 onclick 事件不是正确的 表示。

<asp:Button ID="btnCalculate" runat="server" Text="Calculate" Width="122px" OnClick="btnCalculate_Click" />

会产生类似这样的远程结果:

<input id="btnCalculate" type="submit" value="Calculate"/> 

它指的是服务器上的回调(发布/获取请求),然后调用您视图的 代码 (.aspx.cs) 中定义的 btnCalculate_Click()

public void btnCalculate_Click(object sender, EventArgs e){
   ...
}

相比之下,这个 ASPX 代码将直接转换为相同的“代码”:

<button id="btnCalculate" onClick="btnCalculate_Click()"/>

因此它会告诉客户端(浏览器引擎)寻找适用的 函数(例如,在您的 site.js 或任何其他提供的 资源中):

function btnCalculate_Click(){
    alert("This is client side scripting");
}

【讨论】:

    【解决方案2】:

    我认为你必须修改Client-Server-Paradigm

    客户端发出请求,然后服务器接受该请求。
    结果,服务器向客户端发送一个“应答”(response),然后被客户端接收。

    【讨论】:

    • 我知道,但我不知道 OnClick (javascript) 来自哪里,它是由 aspx 上的原始按钮控件生成的吗?
    • 是的,点击事件是从客户端开始并从服务器获得响应的请求
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多