【问题标题】:Where does an ASP.NET code-behind file execute? (client or server)ASP.NET 代码隐藏文件在哪里执行? (客户端或服务器)
【发布时间】:2014-07-03 22:50:20
【问题描述】:
我的朋友是一位经验丰富的开发人员(但不熟悉 .NET)问我 ASP.NET 代码隐藏代码实际在哪里执行;在服务器或客户端上。我的假设是它在客户端上执行并因此编译为 JavaScript,因为代码隐藏文件中的方法将响应客户端事件,例如选择下拉列表,这不会导致回发。
我真正想要的是更深入地了解代码隐藏文件中的代码相对于应用程序的其余部分的执行方式/位置。
【问题讨论】:
标签:
javascript
asp.net
code-behind
execution
【解决方案1】:
代码隐藏始终在服务器上执行。这就是原因,它也被称为ASP.NET WebForms。执行网页时,简而言之如下。
- 网页作为 HTML 表单刷新
- Web 控件使用必要的 Javascript 刷新为 HTML 输入元素
- Javascript 保持原样(除非动态注入)
下一个问题... ASP.NET 服务器端如何知道我在客户端执行了哪些事件以在服务器端执行适当的事件?
答案是,ASP.NET 将每个 Web 控件转换为一个或多个 html 元素并对其进行唯一命名,以便它可以取回生成事件的 HTML 元素的名称并采取相应的行动。它使用ViewState(除了各种其他用途)来确保 html 控件名称在往返过程中不被篡改。
另一个答案中给出的链接应该可以帮助您了解更多。
【解决方案3】:
TLDR:.NET 代码编译成程序集 (.DLL) 文件,这些文件在服务器上运行和执行。
JavaScript 在客户端上执行(一般参见node.js),.NET 代码在服务器上运行。这两种技术通过 HTTP 请求/响应相互通信。
当第一次从服务器请求页面时,它会运行所有 .NET 代码,并且来自服务器的响应是要呈现的 HTML。此 HTML 可能包含指向其他文件的链接,例如脚本或样式表文件。一旦服务器发送响应,它就与页面无关了。
JavaScript 等客户端语言可以通过整页回发、部分回发(UpdatePanels、gross)或 AJAX 与服务器通信。他们向服务器发送新请求,服务器以新页面/HTML/数据/等响应。
有关客户端/服务器与 Web 应用程序交互的更多信息,请参阅 this article。
【解决方案4】:
文件后面的代码在服务器上执行。互联网上有很多可用的资源。其中之一可能是link
希望你能得到答案