Пространство имен ASP.NET

В каком пространстве имен находится страница Default.aspx, когда я создаю проект ASP.NET?

И как найти пространство имен любой другой страницы ASP.NET в проекте?

Я использую VS2005. Сначала я создал пустое решение, а затем добавил к нему веб-сайт.

Когда я нажимаю правую кнопку и перехожу в меню «Добавить новый веб-сайт», я нахожу следующий шаблон ASP.NET WebSites (1-й шаблон), затем я добавляю его в свой sln.

Я использую С# и VS2005. В этом случае это не будет соответствовать VS2008.


person user366312    schedule 09.08.2009    source источник
comment
Это зависит от типа проекта. Вы создаете новое веб-приложение или создаете новый веб-сайт?   -  person blowdart    schedule 09.08.2009
comment
Это все еще не совсем отвечает на вопрос, какой тип веб-сайта вы добавили? Их два, веб-сайты и веб-приложения (точнее не могу, у меня на этой машине нет 2005)   -  person blowdart    schedule 09.08.2009
comment
Смотрите обновление.   -  person    schedule 09.08.2009


Ответы (3)


Веб-сайты не имеют/не поддерживают пространство имен. Веб-приложения делают.

Чтобы ответить на вопрос, поскольку создается новый «веб-сайт», пространство имен не играет роли. Что касается того, как получить доступ к другим классам страниц WebForm со страницы Webform, я не нашел для этого причины. И я не думаю, что это выполнимо (поправьте меня, если я ошибаюсь).

В любом случае есть способы обойти. Если у вас есть какая-то полезная бизнес-/UI/другая логика, используемая в классе одной из веб-форм, просто переместите эти методы, скажем, в файл XXX.cs в разделе App_Code. Нет необходимости в пространстве имен, и вы можете использовать его во всех классах веб-форм.

person o.k.w    schedule 09.08.2009
comment
Мне нужно наследовать страницы .aspx. - person ; 09.08.2009
comment
Вы имеете в виду, что у вас есть basepage.aspx с базовой страницей класса codebind. И у вас есть файл newpage.aspx, в котором класс newpage наследует базовую страницу? Если это так, прочитайте это: west-wind.com/WebLog/posts/3016.aspx в разделе «На что обратить внимание». Надеюсь это поможет. - person o.k.w; 09.08.2009

Посмотрите на программный код (Default.aspx.cs в вашем случае) рассматриваемой страницы. Там вы увидите свое пространство имен. Aspx является дополнением к классу в программном коде, который объединяется с помощью объявления разделяемого класса.

Я только что создал новый проект веб-приложения. Вот как выглядит код программной части:

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 — веб-сайт и веб-приложение (ссылка исправлена)

Новая модель компиляции выбросила сам файл проекта Visual Studio, вернула asp.net к концепции «компиляция на лету», почти устранила использование пространств имен на веб-сайте, и радикально изменил способ организации шаблона пользовательского интерфейса и связанного с ним кода программной части.

Судя по всему, он просто объединяет все классы, как классы страниц, так и ваши собственные логические классы, которые вы обычно помещаете в папку App_Code. Средство просмотра классов также не показывает объекты страницы, даже если я помещаю их в свои собственные пространства имен, но делает это правильно вместе с пространствами имен для объявлений в папке App_Code. Я полагаю, ребята из команды VS не хотели, чтобы вы заботились о пространствах имен для классов страниц.

person Community    schedule 09.08.2009
comment
На какой планете ты живешь? В любом файле кода программной части asp.net нет объявлений пространств имен. - person ; 09.08.2009
comment
Ты смеешься? Дай мне минутку, я принесу тебе пример. - person ; 09.08.2009
comment
Я использую VS2005, и я никогда не видел, чтобы это происходило в моих веб-проектах. - person ; 09.08.2009
comment
Я сделал этот пример в VS2008 Pro и думаю, что видел примерно то же самое, когда использовал VS 2005. Может быть, вы создавали проекты веб-сайтов, а не проекты веб-приложений? Там организация несколько иная. - person ; 09.08.2009

Попробуйте определить интерфейс в каталоге кода приложения, и ваш код за файлом реализует интерфейс.

person user965160    schedule 26.06.2012