在同一个工程里添加两个aspx页面,VS2005会自动生成Default1和Default2两个类,分别放置在Default1.aspx.cs和Default2.aspx.cs中。在vs2003中会自动置于namespace中,而vs2005里没有namespace,而且我也没有办法在Default2中引用Default1类,为什么?在winform编程里两个窗体的类是可以互相引用的,而在webform中,把Default1拖放到App_code目录下,就可以被Default2访问,C#语法中什么时候跟类文件所在目录扯上关系了?这是ASP.NET特性吗?我该如何理解去这种特性?请高人指点一下?谢谢

解决方案 »

  1.   

    asp.net2.0中类文件需要放在App_Code中编译,放在其他位置是不可以的
      

  2.   

    a.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="a.aspx.cs" Inherits="A.a" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        </form>
    </body>
    </html>a.asp.cs
    using System;namespace A
    {
    public partial class a : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    Response.Write(B.b.s);
    }
    }
    }b.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="b.aspx.cs" Inherits="B.b" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        </form>
    </body>
    </html>b.aspx.csusing System;namespace B
    {
    public partial class b : System.Web.UI.Page
    {
    public static string s = "wjs"; protected void Page_Load(object sender, EventArgs e)
    { }
    }
    }
      

  3.   

    这是由于ASP.NET 2.0的编译机制发生了变化,不像VS 2003把整个项目编译成为一个DLL,它会把页面编译成为不同的DLL,不同的DLL之间正常是不能相互访问的。
      

  4.   

    你用的是2005后来发布的WEB工程版还是刚开始发布的时候直接WEB目录版本?
    WEB目录版本那个添加的ASPX文件的CS中类是默认没有命名空间的,而是以partial形式出现
    你把你的A.ASPX.CS和B.ASPX.CS中的命名空间去掉应该就可以直接引用了
      

  5.   

    再有就是App_Code是用来存放网站目录下的类文件(*.cs)的.
      

  6.   

    同样都是类它们当然可以相互访问?因为它们是partial类吗?搞清楚什么partial类再说只不过HTTP是无状态的,无法得到对方的状态而已。
      

  7.   

    如果可以的话,那你说的则是ASP.NET Application否则就不可以在asp.net2.0中,其默认网站是不认App_Code外面的类文件的
      

  8.   

    这里就是ASP.NET版块,不说ASP.NET Application你以为我是说什么?---
    在同一个工程里添加两个aspx页面,VS2005会自动生成Default1和Default2两个类,分别放置在Default1.aspx.cs和Default2.aspx.cs中。
    ———
    Default1和Default2在不叫类么?
    它们不在类视图显示出来,它们就不是类了吗?
      

  9.   

    avisnet(第十维度)不要太激动,你可能还不理解我的意思,
    VS2005刚出来是没有 Web Application Projects的,只是默认的先建一个文件夹算是一个网站,即不是Web Application Projects
      

  10.   

    如wxl_pilot(空军飞行员)所说 你用的是2005后来发布的WEB工程版还是刚开始发布的时候直接WEB目录版本?如直接WEB目录版本,你所说的就是错了,我当然知道partial关键字的意思.这个问题很简单的嘛.没必要生气^_^
      

  11.   

    但是最终它们都要被编译进程序集app_Code的,一样的结果。
    虽然编译时引用类的智能感知不出来,但运时是没问题的。
      

  12.   

    但是最终它们都要被编译进程序集app_Code的,一样的结果。
    虽然编译时引用类的智能感知不出来,但运时是没问题的。同意,我设了下断点,可以查出来.
      

  13.   

    大家交个朋友吧 [email protected]
      

  14.   

    asp.net2.0中类文件需要放在App_Code中编译,放在其他位置是不可以的