单页ASP.NET中不允许使用结构和类

单页ASP.NET中不允许使用结构和类,asp.net,Asp.net,假设我有一个ASPX文件,其中包含: <%@ Page Language="C#" %> <html> <body> <% int i = 5; Response.Write(i); %> </body> </html> 如果我将关键字“struct”替换为“class”,也会发生同样的情况 我知道“codefile”和“codebehind”类型的项目,但我很好奇为什么我不能像在任何

假设我有一个ASPX文件,其中包含:

<%@ Page Language="C#" %>

<html>
  <body>
  <%
     int i = 5;
     Response.Write(i);
  %>
  </body>
</html>
如果我将关键字“struct”替换为“class”,也会发生同样的情况

我知道“codefile”和“codebehind”类型的项目,但我很好奇为什么我不能像在任何C#程序中一样,在一个ASPX文件中声明结构和类

有人能告诉我原因吗


谢谢。

因为.aspx页面是作为类编译的

当您有一个代码隐藏类时,您会注意到它被标记为
partial
。.aspx页面及其代码隐藏类都编译为同名的
partial


我怀疑.aspx的内容放在方法中,您不能在方法中声明结构或类。

您可以使用指定了
runat=server
script
元素执行此操作:

<%@ Page Language="C#" %>
<script runat=server>
     struct S
     {
         public int i;
     }
</script>
<html>
  <body>
  <% 
     S a = new S();
     a.i = 5;
     Response.Write(a.i);
  %>
  </body>
</html>

结构
{
公共国际一级;
}
这样做的结果是创建一个
私有结构
到ASPX从中继承的任何类的内部,因此它可以在该页面的任何位置(但在其他任何地方)访问

另一个例子:


有关使用
script
此处嵌入代码块的更多信息:

是否缺少公共关键字?@inferon,这是一个输入错误。public关键字出现错误。“我怀疑.aspx的内容放在一个方法中…”可能这就是错误的原因,因为即使.aspx页面被编译为一个类,在任何OO语言中我都可以声明嵌套类(没有深层限制)。感谢您的回答。非常有用。
 Line 18: a.i=5;
 CS1519: Invalid token '=' in class, struct, or interface member declaration.
<%@ Page Language="C#" %>
<script runat=server>
     struct S
     {
         public int i;
     }
</script>
<html>
  <body>
  <% 
     S a = new S();
     a.i = 5;
     Response.Write(a.i);
  %>
  </body>
</html>