Доступ к переменным их контрола
От: flashion  
Дата: 17.06.05 09:20
Оценка:
Подскажите, pls:

На странице Default.aspx нужно создать переменную, например userName. Контролу, который подключен к этой старнице нужно получить эту переменную. Переменная должна жить только в течение генерирования страницы. Пробовал использовать static, но в таком виде она сохраняется при переходе на другую страницу.

Вроде простейшая задача, но никак не получается ее решить.

.NET 2.0 Beta 2
Re: Доступ к переменным их контрола
От: Аноним  
Дата: 17.06.05 09:25
Оценка:
Hranite peremnnuu kak svoistvo kontrola (vnutri kontrola pomeshat' vo ViewState ili sessiu)
Re: Доступ к переменным их контрола
От: Морской дьявол  
Дата: 17.06.05 09:27
Оценка:
Или я чего то непонял или
Page_Load
{
string temp = "Value";
}
Re[2]: Доступ к переменным их контрола
От: flashion  
Дата: 17.06.05 09:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Hranite peremnnuu kak svoistvo kontrola (vnutri kontrola pomeshat' vo ViewState ili sessiu)


А нельзя как раньше в обычном ASP? Один раз переменную вверху страницы создал, а потом везде используешь? И еще, я так понимаю, Viewstate служит для передачи переменных _между страницами_?
Re[2]: Доступ к переменным их контрола
От: flashion  
Дата: 17.06.05 09:40
Оценка:
Здравствуйте, Морской дьявол, Вы писали:

МД>Или я чего то непонял или

МД>Page_Load
МД>{
МД> string temp = "Value";
МД>}

Попробуйте ее получить юзер-контролом.
Re[3]: Доступ к переменным их контрола
От: Морской дьявол  
Дата: 17.06.05 10:26
Оценка:
Здравствуйте, flashion, Вы писали:

F>Попробуйте ее получить юзер-контролом.

А... Тогда точно не понял задачу. А наоборот, встроить переменную в пользовательский контрол и задавать его значение из страницы?
Re[4]: Доступ к переменным их контрола
От: flashion  
Дата: 17.06.05 10:33
Оценка:
Здравствуйте, Морской дьявол, Вы писали:

МД>Здравствуйте, flashion, Вы писали:


F>>Попробуйте ее получить юзер-контролом.

МД>А... Тогда точно не понял задачу. А наоборот, встроить переменную в пользовательский контрол и задавать его значение из страницы?

Да! Но только не так, чтобы сделать, скажем, 10 контролов, которые будут использовать одно и то же свойство и на странице задавать это свойство для каждого контрола по отдельности, а создать свойство класса страницы, а из нужных контролов запрашивать это свойство.
Re: Доступ к переменным их контрола
От: Козьма Прутков Россия  
Дата: 17.06.05 12:20
Оценка:
Здравствуйте, flashion, Вы писали:

F>На странице Default.aspx нужно создать переменную, например userName. Контролу, который подключен к этой старнице нужно получить эту переменную. Переменная должна жить только в течение генерирования страницы. Пробовал использовать static, но в таком виде она сохраняется при переходе на другую страницу.


если только в течение генерации страницы, точнее, в течение обработки запроса, можно положить в HttpContext.

HttpContext.Current.Items["userName"] = "vasya";
...
string name = (string)HttpContext.Current.Items["userName"];


Что касается static, то могу предолжить еще поставить на нее атрибут ThreadStatic, тогда эта переменная будет статической для потока (то есть фактически для акта обработки запроса), а для разных потоков будет иметь разные значения.

В общем, вариантов масса, и все о кривизне: ну зачем так делать-то? Есть отличная штука — IPrincipal и IIdentity. У последней есть свойство Name. Все это добро лежить в HttpContext.Current.User, бери и пользуйся. Кладется туда при аутентификации пользователя.
Да хранит вас господь в сухом прохладном месте...
Re[5]: Доступ к переменным их контрола
От: Морской дьявол  
Дата: 17.06.05 13:36
Оценка:
Здравствуйте, flashion, Вы писали:

F>Здравствуйте, Морской дьявол, Вы писали:


МД>>Здравствуйте, flashion, Вы писали:


F>>>Попробуйте ее получить юзер-контролом.

МД>>А... Тогда точно не понял задачу. А наоборот, встроить переменную в пользовательский контрол и задавать его значение из страницы?

F>Да! Но только не так, чтобы сделать, скажем, 10 контролов, которые будут использовать одно и то же свойство и на странице задавать это свойство для каждого контрола по отдельности, а создать свойство класса страницы, а из нужных контролов запрашивать это свойство.

А чем просто свойство страницы неподходит?


private string temp = "Value";
public string Temp
{
  get { return temp; }
}
Re: Доступ к переменным их контрола
От: AlexGK Россия  
Дата: 18.06.05 06:28
Оценка:
Здравствуйте, flashion, Вы писали:

F>Подскажите, pls:


F>На странице Default.aspx нужно создать переменную, например userName. Контролу, который подключен к этой старнице нужно получить эту переменную. Переменная должна жить только в течение генерирования страницы. Пробовал использовать static, но в таком виде она сохраняется при переходе на другую страницу.


F>Вроде простейшая задача, но никак не получается ее решить.


F>.NET 2.0 Beta 2


В коде страницы:


public class MyPage:System.Web.UI.Page
...........
private string _userName=string.Empty;
public string UserName{
   get{ return _userName;}
}
.....
//инициализация
.........
_userName = "Vasya Pupkin";
....



В коде контрола:

....
private string _getUserName(){
   return ((MyPage)this.Page).UserName;
}
.......


Необходимо, чтобы переменная _userName была инициализирована до того, как контрол к ней обратится
-------------------------------------------

А вообще, например, у себя я делал так: при входе пользователя, я сохранял объект "Пользователь" в сессии (мне был небходим доступ ко всем полям оббъекта), а при необходимости брал информацию оттуда, где-то ASP-вставками, где-то в коде.
Доступ к переменным их контрола
От: Аноним  
Дата: 17.06.05 09:46
Оценка:
System.Web.HttpContext.Current.Items поможет.
Эта коллекция существует только во время обработки запроса.

Все должно быть просто, очень просто, настолько просто — насколько это возможно!
Оренбургское сообщество .NET разработчиков
Мой блог


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
RE: Доступ к переменным их контрола
От: Аноним  
Дата: 17.06.05 09:42
Оценка:
Подскажите, pls:

На странице Default.aspx нужно создать переменную, например userName. Контролу, который подключен к этой старнице нужно получить эту переменную. Переменная должна жить только в течение генерирования страницы. Пробовал использовать static, но в таком виде она сохраняется при переходе на другую страницу.

Вроде простейшая задача, но никак не получается ее решить.

.NET 2.0 Beta 2
Привет, ну вроде должно вот так:


((<название класса, который содержит данный компонент>)this.Parent).userName
Важное замечание — уровень доступа к userName должен быть public, т.е.
public <тип> userName


Вот такие вот пирожкиС уважением, MEPhIst aka Миф .


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Доступ к переменным их контрола
От: Аноним  
Дата: 17.06.05 13:33
Оценка:
Спасибо всем за ответы!

Можно ли поподробнее, что Вы имели ввиду о IPrincipal и IIdentity? Как можно их использовать для данной задачи? Не могли бы Вы все также описать, как в предыдущем примере?

Спасибо!!!!!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Доступ к переменным их контрола
От: Аноним  
Дата: 17.06.05 13:36
Оценка:
IPrincipal и IIdentity

Вам не нужны, вы привели в качестве примера строку "userName" вот за нее и зацепились

Все должно быть просто, очень просто, настолько просто — насколько это возможно!
Оренбургское сообщество .NET разработчиков
Мой блог


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Доступ к переменным их контрола
От: Аноним  
Дата: 17.06.05 13:42
Оценка:
ааааааааааааааааааааааааааааааааа.... понятно
А я userName просто так взял.

В таком случае, использование ...Current.Items не будет считаться за кривизну?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Доступ к переменным их контрола
От: Аноним  
Дата: 17.06.05 13:52
Оценка:
Можно сделать примерно такой класс и использовать внутри обработки запроса где угодно.
public class MyVariable
 {
  const string MyKey = "MyKey";
  private MyVariable()
  {}
  public static string MyVar
  {
   get
   {
    Object obj = System.Web.HttpContext.Current.Items[MyKey];
    if (obj == null)
     return string.Empty;
    return (string)obj;
   }
   set
   {
    System.Web.HttpContext.Current.Items[MyKey] = value;
   }
  }
 }



И использовать так
MyVariable.MyVar = "строка";

Все должно быть просто, очень просто, настолько просто — насколько это возможно!
Оренбургское сообщество .NET разработчиков
Мой блог


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Доступ к переменным их контрола
От: Аноним  
Дата: 20.06.05 05:41
Оценка:
Да, я так делал, но не получается

Ругается:
CS0246: The type or namespace name 'PageClass' could not be found (are you missing a using directive or an assembly reference?)

Объявляю класс страницы так:
public partial class PageClass : System.Web.UI.Page

Контрол вставляю так:
<%@ Register Src="App_Controls/MyControl.ascx" TagName="MyControl" TagPrefix="myTag" %>
<myTag:MyControl ID="MyControl" runat="server" />

VS 2005 мой PageClass внутри контрола даже не видит.

Что я не так делаю?
Подскажите, плиз!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Доступ к переменным их контрола
От: Аноним  
Дата: 20.06.05 05:43
Оценка:
[ThreadStatic] почему-то сохраняется так же, как просто static
тоже виден всем юзерам на всех страницах

пишу так: [ThreadStatic] public static string MyVariable;


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Доступ к переменным их контрола
От: Аноним  
Дата: 20.06.05 10:17
Оценка:
[ThreadStatic] почему-то сохраняется так же, как просто static
тоже виден всем юзерам на всех страницах

пишу так: [ThreadStatic] public static string MyVariable;

Так скорее всего все ваши запросы обрабатываются в одном и том же потоке.

Да, я так делал, но не получается
Ругается:
CS0246: The type or namespace name 'PageClass' could not be found (are you missing a using directive or an assembly reference?)

Объявляю класс страницы так:
public partial class PageClass : System.Web.UI.Page

Контрол вставляю так:
<%@ Register Src="App_Controls/MyControl.ascx" TagName="MyControl" TagPrefix="myTag" %>
<myTag:MyControl ID="MyControl" runat="server" />

VS 2005 мой PageClass внутри контрола даже не видит.
Что я не так делаю?
Подскажите, плиз!


А импортировали то пространство имен в котором public partial class PageClass : System.Web.UI.Page
Туда где описан юзерконтрол?


Все должно быть просто, очень просто, настолько просто — насколько это возможно!
Оренбургское сообщество .NET разработчиков
Мой блог


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Доступ к переменным их контрола
От: Козьма Прутков Россия  
Дата: 20.06.05 12:51
Оценка:
F>В таком случае, использование ...Current.Items не будет считаться за кривизну?

нет
Да хранит вас господь в сухом прохладном месте...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.