【发布时间】:2015-02-17 16:41:31
【问题描述】:
我去面试了,在 ASP.Net 上有人问我这个问题:
客户端有一个按钮,点击它会调用服务器端的按钮点击事件。
当按钮驻留在客户端时,它如何与服务器端的事件进行交互,其背后的机制究竟是什么?
我回复说按钮点击事件是在onclick上写事件名的时候调用的,但是面试官说怎么和服务端交互呢?
我不确定机制,谁能解释一下?
【问题讨论】:
标签: asp.net .net server-side
我去面试了,在 ASP.Net 上有人问我这个问题:
客户端有一个按钮,点击它会调用服务器端的按钮点击事件。
当按钮驻留在客户端时,它如何与服务器端的事件进行交互,其背后的机制究竟是什么?
我回复说按钮点击事件是在onclick上写事件名的时候调用的,但是面试官说怎么和服务端交互呢?
我不确定机制,谁能解释一下?
【问题讨论】:
标签: asp.net .net server-side
简而言之,点击事件首先在客户端引发并捕获。然后通过 HTTP Post 将事件消息传送到服务器。
页面必须解释帖子以确定发生了什么事件,然后在服务器上的代码中调用适当的方法来处理事件。
您可以在此处阅读更多信息 - ASP.NET Web Forms Server Control Event Model。
如果你想更深入一点,可以阅读Page Controller pattern implemented in ASP.NET。
【讨论】:
来自 MSDN:
"如果请求是回发,则调用控件事件处理程序。之后,调用所有验证器控件的 Validate 方法,该方法设置各个验证器控件和页面的 IsValid 属性。(有一个例外这个序列:导致验证的事件的处理程序在验证后被调用。)"
所以这是在说:
完整的页面生命周期参见这篇文章:
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 即可回发到服务器。