【问题标题】:How does a button at client sides knows which event to call on server side?客户端的按钮如何知道在服务器端调用哪个事件?
【发布时间】:2015-02-17 16:41:31
【问题描述】:

我去面试了,在 ASP.Net 上有人问我这个问题:

客户端有一个按钮,点击它会调用服务器端的按钮点击事件。

当按钮驻留在客户端时,它如何与服务器端的事件进行交互,其背后的机制究竟是什么?

我回复说按钮点击事件是在onclick上写事件名的时候调用的,但是面试官说怎么和服务端交互呢?

我不确定机制,谁能解释一下?

【问题讨论】:

    标签: asp.net .net server-side


    【解决方案1】:

    简而言之,点击事件首先在客户端引发并捕获。然后通过 HTTP Post 将事件消息传送到服务器。

    页面必须解释帖子以确定发生了什么事件,然后在服务器上的代码中调用适当的方法来处理事件。

    您可以在此处阅读更多信息 - ASP.NET Web Forms Server Control Event Model

    如果你想更深入一点,可以阅读Page Controller pattern implemented in ASP.NET

    【讨论】:

      【解决方案2】:

      来自 MSDN:

      "如果请求是回发,则调用控件事件处理程序。之后,调用所有验证器控件的 Validate 方法,该方法设置各个验证器控件和页面的 IsValid 属性。(有一个例外这个序列:导致验证的事件的处理程序在验证后被调用。)"

      所以这是在说:

      1. 单击定义了服务器端事件的 asp.net 按钮
      2. 点击会导致回帖(您可以查看为此生成的 javascript)
      3. 然后在页面生命周期期间(在 page_load 等之后)调用相应的事件

      完整的页面生命周期参见这篇文章:

      https://msdn.microsoft.com/en-us/library/ms178472%28v=vs.100%29.aspx

      【讨论】:

      • 2. The click causes a post back (you can look at the javascript generated for this) 说法不正确。您不需要 JavaScript 即可回发到服务器。
      • 你是对的 - 但大多数时候会生​​成以下内容:function __doPostBack{...}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多