我的朋友是一位经验丰富的开发人员(但不熟悉 .NET)问我 ASP.NET 代码隐藏代码实际在哪里执行;在服务器或客户端上。我的假设是它在客户端上执行并因此编译为 JavaScript,因为代码隐藏文件中的方法将响应客户端事件,例如选择下拉列表,这不会导致回发。
我真正想要的是更深入地了解代码隐藏文件中的代码相对于应用程序的其余部分是如何/在何处执行的。
我的朋友是一位经验丰富的开发人员(但不熟悉 .NET)问我 ASP.NET 代码隐藏代码实际在哪里执行;在服务器或客户端上。我的假设是它在客户端上执行并因此编译为 JavaScript,因为代码隐藏文件中的方法将响应客户端事件,例如选择下拉列表,这不会导致回发。
我真正想要的是更深入地了解代码隐藏文件中的代码相对于应用程序的其余部分是如何/在何处执行的。
Codebehind 始终在服务器上执行。这就是原因,它也被称为ASP.NET WebForms
。执行网页时,简而言之,以下是发生的情况。
下一个问题...... ASP.NET 服务器端如何知道我在客户端执行了哪些事件以在服务器端执行适当的事件?
答案是,ASP.NET 将每个 Web 控件转换为一个或多个 html 元素并对其进行唯一命名,以便它可以取回生成事件的 HTML 元素的名称并采取相应的行动。它使用ViewState
(除了各种其他用途)来确保 html 控件名称在往返过程中不被篡改。
另一个答案中给出的链接应该可以帮助您了解更多。
TLDR:.NET 代码编译成程序集 (.DLL) 文件,这些文件在服务器上运行和执行。
JavaScript 在客户端执行(通常参见node.js),.NET 代码在服务器上运行。这两种技术通过 HTTP 请求/响应相互通信。
当第一次从服务器请求页面时,它会运行所有 .NET 代码,并且来自服务器的响应是要呈现的 HTML。此 HTML 可能包含指向其他文件的链接,例如脚本或样式表文件。一旦服务器发送响应,它就与页面无关了。
JavaScript 等客户端语言可以通过整页回发、部分回发(UpdatePanels、gross)或 AJAX 与服务器通信。他们向服务器发送新请求,服务器以新页面/HTML/数据/等响应。
看有关客户端/服务器与 Web 应用程序交互的更多信息,本文。
http://msdn.microsoft.com/en-us/magazine/cc163675.aspx
文件后面的代码在服务器端执行。除了 .aspx 文件中的呈现方法之外,ASP.NET 可以轻松地生成所有控制变量声明作为分部类,然后可以将其与简化的代码隐藏类合并。这正是 Windows 窗体在 .NET Framework 2.0 中的工作方式。所有设计器生成的代码都放置在同级部分类中,然后与您的应用程序逻辑和事件处理程序合并到一个表单派生类中,从而在机器生成的代码和开发人员代码之间建立清晰的分离,而无需求助于继承。
文件背后的代码在服务器上执行。互联网上有很多可用的资源。其中之一可能是这个链接
希望你得到你的答案