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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно считать свойство пользовательского, контрола 
:(
    Опции темы
Nickname
Дата 20.11.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вопрос состоит в следующем: У меня есть пользовательский контрол, который я подключаю на странице. Потом в этом контроле меняю общедоступное свойство, а на странице пытаюсь его прочитать. Но прочитанное свойство имеет не то значение, которое реально ему присвоено.
Я как понимаю, что в событии страницы Page_Load еще рано читать свойство. Так когда правильно?
Страница:
Код

protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text=" На странице: "+WebUserControl1.IsLoged.ToString();
    }

Контрол:
Код

private bool isloged = false;
    public bool IsLoged
    {
        get { return isloged; }
        set { isloged = value; }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        isloged = true;
        Label1.Text = " В контроле: "+isloged.ToString();
    }

Выдает все время:
Цитата

  В контроле: True   На странице: False  

PM MAIL   Вверх
Servena
Дата 20.11.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не рано будет в Render и PreRender.
PM MAIL   Вверх
Nickname
Дата 20.11.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как правильно объявить эти события? А нельзя никак по хитрому сделать чтобы в Page_Load читалось? Или можно как-то узнать, что контрол полностью загружен, а потом прочитать свойство?
 smile Смотрю, Servena, вы тоже на работе засиделись?

Это сообщение отредактировал(а) Nickname - 20.11.2007, 19:18
PM MAIL   Вверх
Servena
Дата 20.11.2007, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я не спец в асп, но знаю, что что все события идут по очереди и у каждого есть свое назначение.
Что-то вроде такого: Инит, Лоад, ПреРендер, Рендер - и еще куча между ними. После Лоад становятся доступными ВьюСтейты елементов.

 smile На работе лежит список всех событий и все что доступно в них - у тебя был бы он, но сейчас я в Африке, так что через месяц только.
PM MAIL   Вверх
Mymik
Дата 21.11.2007, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Nickname, я тебе советую воспользоваться событиями в asp.net
А именно. Объявить метод, который будет обрабатывать все это дело. А в твоем контроле создать поле типа
Код

public event EventHandler MyHandler;

В родительском контроле при OnLoad присваивать типа 
Код

myControl.MaHandler += new EventHandler(this.UpdateEvent);

После чего. В Page_Load того контрола, который тебе нужен делать следующее 
Код

if(MyHandler != null)
{
    MyHandler(sender, e);
}

И так у тебя все будет замечательно работать и обновляться...

P.S. переходи на событийно-ориентированное программирование ;)


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Nickname
Дата 21.11.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Mymik, сделал все как вы сказали - работает. Свойство считывается нормально в событии UpdateEvent, но как мне быть в такой сетуации: контрол который я написал служит для проверки, введенного пользователем логина/пароля и, если проверка прошла успешно, то выставляет одно из своих свойств в true, которое в дальнейшем должно считываться родительской страницей. Ведь как я понимаю к моменту Page_Load свойство уже должно быть прочитано, что бы можно было осуществлять вывод той или иной информации на странице. Может логика последовательности действий не верна в данном случае, помогите тогда разобраться как надо?
PM MAIL   Вверх
Mymik
Дата 21.11.2007, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Nickname, PageLoad вызывается сначала для Parent контрола, а потом для Child контрола(в отличие от Init). Так что тебе никак нельзя обойтись тут без событий.
Тебе по-любому нужно вызывать событие непосредственно в child контроле, которое будет в Parent Control изменять нужные тебе данные.



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Nickname
Дата 21.11.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Наверно засунуть аутентификацию в контрол не лудшее решение - буду думать по другому...
PM MAIL   Вверх
Mymik
Дата 21.11.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



нет, почему, вполне нормальное решение. Просто не бойся использоваться события... это очень мощный инструмент .NET Framework.
Просто после того как пользователь залогинился, ты можешь доставать все данные из HttpContext.Current.User и тебе не нужно будет никаких хитрых изворотов.



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Nickname
Дата 21.11.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Просто после того как пользователь залогинился, ты можешь доставать все данные из HttpContext.Current.User и тебе не нужно будет никаких хитрых изворотов

А можно про это по подробнее?
PM MAIL   Вверх
Mymik
Дата 21.11.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Nickname @  21.11.2007,  12:11 Найти цитируемый пост)
А можно про это по подробнее? 

А что тут подробнее то... вроде бы и рассказывать нечего. Пишешь в своем проекте эту строчку, ставишь точку и наблюдаешь там некоторые полезные методы... вообще это метод из asp.net 1.1, но он мне нравится smile не надо писать MemberShip провайдеров... правда инфы меньше, да и возможностей. Но а что нам нужно то... проверить авторизован ли пользователь ??? (HttpContext.Current.User.Identity.IsAuthenticated) Коль авторизован, то надо достать его имя smile (HttpContext.Current.User.Identity.Name) вот и все. А дальше, если нужно больше инфы, то фперед в СУБД и искать все что тебе нужно.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Nickname
Дата 21.11.2007, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как сделать так, что бы пользователь стал авторизованным (что бы в этих свойства стали заполнеными)? Это что-то связанное с авторизацией через forms?
PM MAIL   Вверх
Mymik
Дата 21.11.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Nickname @  21.11.2007,  12:32 Найти цитируемый пост)
А как сделать так, что бы пользователь стал авторизованным (что бы в этих свойства стали заполнеными)? Это что-то связанное с авторизацией через forms

да.

пользуйся поиском -->> КЛАЦ



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Nickname
Дата 21.11.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Теперь дальше не понятно.
Если несколько страниц используют один и тот-же контрол аутентификации, что же мне указывать в loginUrl?
Код

<authentication mode="Forms">
      <forms loginUrl="???????" 
        protection="All" timeout="60">
      </forms>
    </authentication>


PM MAIL   Вверх
Nickname
Дата 21.11.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

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

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

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


 




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


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

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