ASP.NET 命名空间

6
当我创建一个ASP.NET项目时,Default.aspx页面所在的命名空间是什么?
如何找到项目中任何其他ASP.NET页面的命名空间?
我正在使用VS2005。我首先创建了一个空解决方案,然后添加了一个WebSite。
当我点击右键并转到“添加新网站”菜单时,我会发现以下模板ASP.NEt WebSites(第一个模板),然后我将其添加到我的解决方案中。
我正在使用C#和VS2005。这在此情况下与VS2008不匹配。

这取决于项目类型。您是要创建新的“Web应用程序”还是创建新的“网站”? - blowdart
这仍然不能很好地回答问题,您添加了哪种类型的网站?有两种,网站和Web应用程序(我无法更加确切,因为此计算机上没有2005)。 - blowdart
3个回答

9

网站不支持命名空间,而Web应用程序支持。

回答这个问题时,由于创建了一个新的“网站”,命名空间并不起作用。至于如何从Webform页面访问其他WebForm页面类,我还没有找到原因。我认为这是不可行的(如果我错了,请纠正我)。

无论如何,有方法可以解决。如果您在一个Webform类中使用了一些可重用的业务/UI/其他逻辑,则将这些方法移动到App_Code下的XXX.cs文件中即可。不需要命名空间,您可以在所有Webform类中使用它。


我需要继承 .aspx 页面。 - JMSA
3
你的意思是你有一个名为"basepage.aspx"的页面,它包含一个名为"basepage"的codebind类。同时,你有一个名为"newpage.aspx"的新页面,它继承了"basepage"类,是这样吗?如果是这样,请阅读此链接:http://www.west-wind.com/WebLog/posts/3016.aspx ,其中的"What to watch out for"小节可能会对你有所帮助。 - o.k.w

2

请查看你所问页面的代码后端(在你的情况下是Default.aspx.cs)。在那里,你会看到你的命名空间。Aspx是与代码后端中的类合并使用的部分类声明。

我刚创建了一个新的Web应用程序项目。这是代码后端的样子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

你看到了"WebApplication1"的命名空间。你看到了吗?

补充: 我创建了一个网站项目来检查这个问题。好的,我确认了,我在那里没有看到任何命名空间声明。在谷歌上搜了一下后,我找到了这篇文章:

asp.net - Web Site vs. Web Application (链接修复)

新的编译模型抛弃了 Visual Studio 项目文件本身,将 asp.net 带回了“即时编译”概念,几乎消除了 Web 站点内使用命名空间的必要性,并彻底改变了 UI 模板和相关代码的布局方式。

从外观上看,它只是将所有的类混合在一起,包括页面类和通常放在 App_Code 文件夹中的自定义逻辑类。即使我将页面对象包装在我自定义的命名空间中,类查看器也不会显示页面对象,但它会正确地显示 App_Code 文件夹中的声明以及相应的命名空间。我想 VS 团队的人并不希望你关心页面类的命名空间。


你住在哪个星球上?任何asp.net代码后台文件中都没有命名空间声明。 - JMSA
1
你在开玩笑吗?给我一分钟,我会给你提供一个例子。 - user151323
我正在使用VS2005,我从未在我的Web项目中看到过这种情况发生。 - JMSA
2
我在VS2008 Pro中完成了这个示例,当我使用VS 2005时,我认为看到的东西多少是相同的。也许你创建的是网站项目而不是Web应用程序项目?那里的组织有些不同。 - user151323

2
尝试在应用程序代码目录中定义一个接口,并让您的代码后台文件实现该接口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接