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