Создавать частичные классы в Asp.Net

У меня есть небольшое веб-приложение.

Вот что я хочу сделать: создавать частичные классы, чтобы разделить код за файлом. Почему я не могу создавать частичные классы напрямую?

Если это файл с выделенным кодом:

using System;
using System.Configuration....


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

А также создайте этот класс:

public partial class _Default
{
    public void Test()
    {
    }
}

Я получаю сообщение об ошибке «Тест не существует в текущем контексте».

Почему это?

Я заставлю все работать, если я создам пару частичных классов, которые наследуются от System.Web.UI.Page, а затем унаследую свой файл с выделенным кодом от этого класса (результат частичных классов). Это единственный способ?

Имеет ли какое-то отношение к тому, что программный код и aspx-страница динамически компилируются в класс?

Был бы признателен, если бы кто-нибудь мог ответить на мою проблему. Сейчас все работает, но я бы предпочел создавать частичные классы на том же «уровне», что и код, и избегать использования наследования.

Спасибо / Джон

(обратите внимание, что у меня есть подчеркивание перед обоими классами, но в предварительном просмотре виден только один, я не знаю почему ..)


person John    schedule 05.04.2009    source источник
comment
В каком пространстве имен находится создаваемый вами частичный класс?   -  person Peter Lillevold    schedule 05.04.2009
comment
Вы используете проект веб-приложения или веб-сайт?   -  person mmx    schedule 05.04.2009


Ответы (3)


1) Поместите свои частичные классы в каталог app_code (я никогда не пробовал этого)
2) Преобразуйте свое приложение в проект веб-приложения из проекта веб-сайта

WAP больше похож на проект dll или winforms, который компилируется перед запуском (хотя пользовательский интерфейс может обновляться) и помещает классы в пространства имен. Проекты веб-сайтов компилируются с использованием aspnet_compiler, который работает иначе (например, сборки с динамическими именами), чем стандартный компилятор.

person Community    schedule 05.04.2009

Они должны быть в одном пространстве имен, если они не будут работать.

Наилучшие пожелания!

person MRFerocius    schedule 05.04.2009

Окей. Ну, это не была проблема с пространством имен, но спасибо за это предложение.

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

По умолчанию, когда я начинаю новый проект, я всегда выбираю создать новый веб-сайт, у меня никогда раньше не было с этим проблем.

Так что, конечно, мне придется спросить, в чем разница, кроме упомянутой выше?

Будут ли какие-то недостатки в том, чтобы всегда использовать проекты веб-приложений вместо проектов веб-сайтов?

Спасибо / Джон

person John    schedule 05.04.2009
comment
Много информации об этом прямо здесь stackoverflow.com/search?q=website+web+application+project - person ; 09.04.2009