Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В созданном классе не видно label 
:(
    Опции темы
hardigun
Дата 22.2.2010, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.2.2010

Репутация: нет
Всего: нет



Доброго времени суток! Вопрос пожет показаться кому то глупым  и простым, но я реально столкнулся с проблемой и не смог найти решение(наверное всё должно быть очень просто  smile )

Суть: создал страницу, поместил на неё Label, в коде создал класс(код ниже), в классе не могу обратиться к Label. 

Код

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class courses : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {        
        WorkWithCourses coursesObj= new WorkWithCourses();
        coursesObj.GetAllCourses();
        Label1.Text = "asdfdf";//здесь видит
    }
}

public class WorkWithCourses
{
    db data;

    public WorkWithCourses()
    {
        data = new db(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["conString"].ConnectionString);
    }

    public void GetAllCourses()
    {
        Label1.Text = data.getFromDB("select * from courses");//а здесь нет, вылетает ошибка перед запуском
    }
}


если унаследовать второй класс от courses, то сайт запускается, но выдаёт ошибку сервера в браузере "System.NullReferenceException: Object reference not set to an instance of an object.". Просьба сильно не ругать  smile  и помочь.

ЗЫ: есть ещё маленький косячок  smile мне кажется, что он будет как раз в тему. Создал отдельный класс и поместил его в App_Code по наставлению студии. Вот в этом классе никак не увидеть класс WorkWithCourses, а очень бы хотелось. Вопрос всё тот же: "чехо делать?". Может я чего то не наследую? Пробовал в namespace объединить два класса из кода выше - ругается на меня студия, говорит что нехороший я...

Спасибо.
PM MAIL   Вверх
KelTron
Дата 22.2.2010, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 38



Он ничего и не должен "видеть", ведь он никак не связан с твоей страничкой.
Конкретно в твоём случае однозначно должно быть так:
Код

public partial class courses : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {        
        WorkWithCourses coursesObj= new WorkWithCourses();
        
        Label1.Text = coursesObj.GetAllCourses();
    }
}

public class WorkWithCourses
{
    db data;

    public WorkWithCourses()
    {
        data = new db(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["conString"].ConnectionString);
    }

    public string GetAllCourses()
    {
        return data.getFromDB("select * from courses");
    }
}

Единственно непонятно что возвращает метод getFromDB, почему строка? по логике там должна быть коллекция объектов или дататейбл...

Цитата(hardigun @  22.2.2010,  01:47 Найти цитируемый пост)
Создал отдельный класс и поместил его в App_Code по наставлению студии.

Вообще лучше все свои классы помещать туда, включая WorkWithCourses, тогда проблем не будет.

Цитата(hardigun @  22.2.2010,  01:47 Найти цитируемый пост)
 ругается на меня студия, говорит что нехороший я.

Ну тогда тебе ничем не помочь, раз студии ты не понравился..)
А если серьёзно, то сообщение об ошибке нужно писать. (Почему все думают что на форуме одни телепаты...)



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
Любитель
Дата 23.2.2010, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(hardigun @  22.2.2010,  01:47 Найти цитируемый пост)
Вопрос всё тот же: "чехо делать?".

Ээхх.. Короткий ответ - читать основы архитектуры ASP .Net smile
По сабжу:
1. Почему Label1 нулловый при наследовании? Потому что ему нигде не присваивается иное значение. Для страницы оно присваивается средой ASP .Net при её инициализации (если точнее - это выполняется рекурсивно для всех контролов).
2. Почему из классов в App_Code не видно класс, объявленный в code behind страницы? Тоже всё просто - это разные сборки. Сборка для кода в code-behind файле (если это web site project, а не web application) генерируется отдельная. При изменении этого кода будет перебилжена только эта сборка. Для всего в App_Code - тоже отдельная.


--------------------
PM MAIL ICQ Skype   Вверх
hardigun
Дата 23.2.2010, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.2.2010

Репутация: нет
Всего: нет



to KelTron, Любитель

Спасибо за развёрнутые ответы! Поместил все свои классы в App_Code. Я понял, что по умолчанию Label со страницы мой класс увидеть не сможет и это нормально, а можно ли как-то всё-таки унаследовать контрол классу или нет  smile ? Если можно, то не затруднит ли привести примерчик или дать ссылку, как правильно унаследовать.  
PM MAIL   Вверх
Любитель
Дата 23.2.2010, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



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


--------------------
PM MAIL ICQ Skype   Вверх
hardigun
Дата 24.2.2010, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.2.2010

Репутация: нет
Всего: нет



to Любитель

Спасибо, теперь мне окончательно всё стало ясно. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.