Asp.net aspx是如何编译的?

Asp.net aspx是如何编译的?,asp.net,Asp.net,如何编译.aspx和aspx.cs文件?它是两个程序集还是两个文件合并为一个并将创建为一个程序集?它是否遵循任何层次结构/继承。正在将aspx创建为相应的C代码文件(只有这样我们才能正确创建程序集?如果我错了,请更正!),作为windows form designer.cs文件中的一个文件?这取决于项目类型。使用ASP.Net,您可以创建两种类型的项目: 如何编译.aspx和aspx.cs文件? 使用Web应用程序project,您可以将aspx文件、用户控件和其他在此项目中找到的代码编译到单个

如何编译.aspx和aspx.cs文件?它是两个程序集还是两个文件合并为一个并将创建为一个程序集?它是否遵循任何层次结构/继承。正在将aspx创建为相应的C代码文件(只有这样我们才能正确创建程序集?如果我错了,请更正!),作为windows form designer.cs文件中的一个文件?

这取决于项目类型。使用ASP.Net,您可以创建两种类型的项目:

如何编译.aspx和aspx.cs文件?

使用
Web应用程序
project,您可以将
aspx
文件、用户控件和其他在此项目中找到的代码编译到单个dll中,并将其部署到服务器上

使用
websiteproject
只需在服务器上复制源代码,
ASP.Net
将为您处理编译。网站项目将自定义类的源代码保存在App_code文件夹中(您必须在该链接上阅读更多关于这些类的信息)

是两个程序集,还是两个文件合并为一个,并将创建为一个程序集?

在所有这些情况下,在
aspx、ascx
文件中找到的代码都不是由您编译的(使用Visual Studio等)<代码>ASP.Net解析这些文件并创建存储在其临时文件夹中的dll。“aspx,ascx”DLL(可以不止一个)与您使用Visual Studio创建的DLL不同(我相信它与从App_Code文件夹创建的DLL不同,因为该代码无法访问页面中的代码)

是否遵循任何层次结构/继承?


对。解析和编译页面时,生成的类将继承名为at属性的类,该类位于@page指令

<%@ Page Language="C#" CodeBehind="Default.aspx.cs" 
         Inherits="WebApplication1._Default" %>
鉴于从标记生成的类继承了我们编写的类(通常是代码隐藏中的类,
aspx.cs
文件),我们可以自由使用其成员或方法

以下方法是_Default类的方法:

 protected string ToUpper(string source)
        {
            return source.ToUpper();
        }
然后在标记中,我们可以调用:

<form id="form1" runat="server">
  <%= ToUpper("Microsoft") %>
</form>
并更改
继承
值:

<%@ Page Language="C#" Inherits="WebApplication1.PreviewPage" %>

正在将aspx创建为相应的C#代码文件

指令
@Page
中的
Language
属性指示编译
aspx/ascx
文件所使用的语言。因此,您可以在aspx文件中实际使用VB.Net,并使用C#编译器编译网站


这是另一种编译,与VisualStudio不同,它使用不同的选项。这就是为什么在web.config中有一些选项可以将
compilementmode
设置为
Debug/Release
,还可以指示编译器使用其他可用选项的原因。

我不太理解这个问题,但这可能会有所帮助。当解析和编译页面时,生成的类将继承一个名称-->生成的类意味着aspx/ascx类?我想说“在继承时命名”。对不起,正如你所看到的,英语不是我的母语,我还有很多东西要学拼写/写作。我加了一个例子
<% SomeValue = 1; %>
<%= SomeValue %>
<head runat="server">

    <script runat="server" language="C#">
        private int someCounter = 10;
    </script>

</head>
<body>
    <% for (var i = 0; i < someCounter; i++)
       { %>
        <p>
            Paragraph number:<%= i %>
       </p>
    <% } %>
</body>
</html>
public PreviewPage: System.Web.Page
{
     public  PreviewPage()
     {
          this.Load += (o, e) => {
               // code here to see if the authenticated user has the right to see the page
              // if not, redirect the user to another page 
          }
     }
}
<%@ Page Language="C#" Inherits="WebApplication1.PreviewPage" %>