На странице 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)
Здравствуйте, Аноним, Вы писали:
А>Hranite peremnnuu kak svoistvo kontrola (vnutri kontrola pomeshat' vo ViewState ili sessiu)
А нельзя как раньше в обычном ASP? Один раз переменную вверху страницы создал, а потом везде используешь? И еще, я так понимаю, Viewstate служит для передачи переменных _между страницами_?
Здравствуйте, flashion, Вы писали:
F>Попробуйте ее получить юзер-контролом.
А... Тогда точно не понял задачу. А наоборот, встроить переменную в пользовательский контрол и задавать его значение из страницы?
Здравствуйте, Морской дьявол, Вы писали:
МД>Здравствуйте, flashion, Вы писали:
F>>Попробуйте ее получить юзер-контролом. МД>А... Тогда точно не понял задачу. А наоборот, встроить переменную в пользовательский контрол и задавать его значение из страницы?
Да! Но только не так, чтобы сделать, скажем, 10 контролов, которые будут использовать одно и то же свойство и на странице задавать это свойство для каждого контрола по отдельности, а создать свойство класса страницы, а из нужных контролов запрашивать это свойство.
Здравствуйте, 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, бери и пользуйся. Кладется туда при аутентификации пользователя.
Здравствуйте, flashion, Вы писали:
F>Здравствуйте, Морской дьявол, Вы писали:
МД>>Здравствуйте, flashion, Вы писали:
F>>>Попробуйте ее получить юзер-контролом. МД>>А... Тогда точно не понял задачу. А наоборот, встроить переменную в пользовательский контрол и задавать его значение из страницы?
F>Да! Но только не так, чтобы сделать, скажем, 10 контролов, которые будут использовать одно и то же свойство и на странице задавать это свойство для каждого контрола по отдельности, а создать свойство класса страницы, а из нужных контролов запрашивать это свойство.
А чем просто свойство страницы неподходит?
private string temp = "Value";
public string Temp
{
get { return temp; }
}
Здравствуйте, 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";
....
Необходимо, чтобы переменная _userName была инициализирована до того, как контрол к ней обратится
-------------------------------------------
А вообще, например, у себя я делал так: при входе пользователя, я сохранял объект "Пользователь" в сессии (мне был небходим доступ ко всем полям оббъекта), а при необходимости брал информацию оттуда, где-то ASP-вставками, где-то в коде.
Доступ к переменным их контрола
От:
Аноним
Дата:
17.06.05 09:46
Оценка:
System.Web.HttpContext.Current.Items поможет.
Эта коллекция существует только во время обработки запроса.
На странице Default.aspx нужно создать переменную, например userName. Контролу, который подключен к этой старнице нужно получить эту переменную. Переменная должна жить только в течение генерирования страницы. Пробовал использовать static, но в таком виде она сохраняется при переходе на другую страницу.
Вроде простейшая задача, но никак не получается ее решить.
.NET 2.0 Beta 2
Привет, ну вроде должно вот так:
((<название класса, который содержит данный компонент>)this.Parent).userName
Важное замечание — уровень доступа к userName должен быть public, т.е.
public <тип> userName
Вот такие вот пирожкиС уважением, MEPhIst aka Миф .
Можно ли поподробнее, что Вы имели ввиду о IPrincipal и IIdentity? Как можно их использовать для данной задачи? Не могли бы Вы все также описать, как в предыдущем примере?
[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
Туда где описан юзерконтрол?