powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Использование переменной на разных страницах
16 сообщений из 16, страница 1 из 1
Использование переменной на разных страницах
    #33294221
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю приложение. Если мне нужно открыть новую страницу с сохранением значения какой-нибудь переменной из старой страницы я делаю:
Код: plaintext
Response.Redirect("namepagenew?index="+variable);
А уже на новой странице отлавливаю эту переменную.
Чем мне будет грозить способ, когда на старой странице я публикую эту переменную:
Код: plaintext
public static variable;
Определяю ее. А на новой странице использую
Код: plaintext
nameclasspageold.variable
?

В чем различия двух способов использования переменных на разных страницах (плюсы и минусы)?
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33296355
marina milanina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй способ грозит тем, что в рамках приложения, эта переменная будет одинаковой для всех пользователей.
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33296370
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4Maxy - мона еще и Session использовать
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33309160
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marina milaninaВторой способ грозит тем, что в рамках приложения, эта переменная будет одинаковой для всех пользователей.
Спасибо, так оно и получается. Придется многое переписывать.
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33309239
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-duke4Maxy - мона еще и Session использовать

Хорошо, тогда что лучше: мой первый способ или Ваш? Какие здесь плюсы и минусы?
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33311513
sfes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Способ
Код: plaintext
Response.Redirect("namepagenew?index="+variable);
всегда хорош, если только не передаются данные, которые нежелательно давать менять пользователю(они веди будут в адресной строке).
Нежелательно - в плане, может ли такое изменение навредить сайту или другим пользователям.
Если да, то лучше использовать Session.
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33311680
Vadimek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://msdn.microsoft.com/library/default.asp?url=/library/rus/cpguide/html/cpconpassingservercontrolvaluesbetweenpages.asp] Вот ещё один вариант.
Правда, используется метод Server.Transfer().
Вкратце :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
On firstpage.aspx:
Server.Transfer("secondpage.aspx",true);

On secondpage.aspx:
fp = (FirstPageClass)Context.Handler;
if(fp.SomePropertyOnFirstPage != String.Empty)
{

}
.......
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33311883
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sfesСпособ
Код: plaintext
Response.Redirect("namepagenew?index="+variable);
всегда хорош, если только не передаются данные, которые нежелательно давать менять пользователю(они веди будут в адресной строке).
Нежелательно - в плане, может ли такое изменение навредить сайту или другим пользователям.
Если да, то лучше использовать Session.
Если этот способ хорош, то, наверно, можно попробовать: 1. захешировать переменную; 2. аутентифицировать на каждой странице (или, например, в шапке, используемой на каждой странице) пользователя.

С другой стороны этот способ, на мой взгляд, плох тем, что поисковые системы, я слышал, очень с большим трудом фиксируют адреса с длинными окончаниями, типа "namepage?index="+variable".
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33311926
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marina milaninaВторой способ грозит тем, что в рамках приложения, эта переменная будет одинаковой для всех пользователей.

Вот что еще обнаружилось при втором способе. Если приложение простаивает некоторое время, то переменная обнуляется. Это противнее всего!
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33318539
manumba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadimek http://msdn.microsoft.com/library/default.asp?url=/library/rus/cpguide/html/cpconpassingservercontrolvaluesbetweenpages.asp] Вот ещё один вариант.
Правда, используется метод Server.Transfer().
Вкратце :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
On firstpage.aspx:
Server.Transfer("secondpage.aspx",true);

On secondpage.aspx:
fp = (FirstPageClass)Context.Handler;
if(fp.SomePropertyOnFirstPage != String.Empty)
{

}
.......


Недостаток этого подхода в том, что он предполагает переход на вторую страницу только с первой.......Если переход идет еще с одной, а так бывает очень часто, то придется использовать либо другой подход, либо какой-то if писать.

Итого:
1. если можно передать через командную строку, то делаем это.....Когда этого нельзя делать: секретные данные, сложные обьекты для передачи, либо много данных
2. если не 1., то юзаем сессию. Недостаток - при сильном использовании начинаются тормоза. Плюс - очень легко и понятно и не надо никаких извращений.
3. Если все переходы на страницы во всем приложении один-к-одному (что Vadimek предложил), то можно и этот способ. Но ведь хочется, чтобы во всем приложении был один метод передачи параметров, а не куча, ведь так?.....а ведь обязательно появится много-к-одному, и тогда это не прокатит......Вообщем, мне этот метод не нравится, ИМХО конечно.
4. Если надо очень сложные данные передавать и много, то юзаем БД. Сложность - нужно разрабатывать свой механизм для этого.
5*. Статическая переменная. Это скорее не способ передачи между окнами в одной сессии, а между сессиями.....Так что в многопользовательской апликухе не проканает.

6. Ваши варианты..может я что-то пропустил....
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33322863
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
manumba Vadimek http://msdn.microsoft.com/library/default.asp?url=/library/rus/cpguide/html/cpconpassingservercontrolvaluesbetweenpages.asp] Вот ещё один вариант.
Правда, используется метод Server.Transfer().
Вкратце :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
On firstpage.aspx:
Server.Transfer("secondpage.aspx",true);

On secondpage.aspx:
fp = (FirstPageClass)Context.Handler;
if(fp.SomePropertyOnFirstPage != String.Empty)
{

}
.......


Недостаток этого подхода в том, что он предполагает переход на вторую страницу только с первой.......Если переход идет еще с одной, а так бывает очень часто, то придется использовать либо другой подход, либо какой-то if писать.

Итого:
1. если можно передать через командную строку, то делаем это.....Когда этого нельзя делать: секретные данные, сложные обьекты для передачи, либо много данных
2. если не 1., то юзаем сессию. Недостаток - при сильном использовании начинаются тормоза. Плюс - очень легко и понятно и не надо никаких извращений.
3. Если все переходы на страницы во всем приложении один-к-одному (что Vadimek предложил), то можно и этот способ. Но ведь хочется, чтобы во всем приложении был один метод передачи параметров, а не куча, ведь так?.....а ведь обязательно появится много-к-одному, и тогда это не прокатит......Вообщем, мне этот метод не нравится, ИМХО конечно.
4. Если надо очень сложные данные передавать и много, то юзаем БД. Сложность - нужно разрабатывать свой механизм для этого.
5*. Статическая переменная. Это скорее не способ передачи между окнами в одной сессии, а между сессиями.....Так что в многопользовательской апликухе не проканает.

6. Ваши варианты..может я что-то пропустил....

Здорово. Это то, что я хотел узнать. Все разложено по полочкам. Спасибо!
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33338243
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот как сделать следующее?
На первой странице - датагрид, где:
Код: plaintext
DataKeyFild="id"
Там же есть колонка:
Код: plaintext
1.
2.
3.
4.
        <asp:TemplateColumn ItemStyle-HorizontalAlign="Center">
                  <ItemTemplate>
                    <a id="lnkDetails" runat="server"target="_blank">Details</a>
                  </ItemTemplate>
                </asp:TemplateColumn>
Через следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
    private void dg_ItemDataBound(Object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
    {...
      HtmlAnchor anchor = null;
      int id = (int)(dg.DataKeys[e.Item.ItemIndex]);
      anchor = (HtmlAnchor)(e.Item.FindControl("lnkDetails"));
      anchor.HRef = "namepagenew";
      ...
Открываю новую страницу, но не хочу показывать в командной строке id, так как он секретный. Хочу при на нажатии на lnkDetails сохранить id нажатой строки в сессии и использовать его на новой странице. Как это сделать?
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33338396
Abuserrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<asp:TemplateColumn Visible="False">
   <ItemTemplate>
<asp:Literal ID="lSecretID" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.SecretID") %>'></asp:Literal>
   </ItemTemplate>
</asp:TemplateColumn>

<asp:TemplateColumn>
   <ItemTemplate>
<asp:LinkButton ID="ToNewPage" Runat="server" Text='go to other page' CommandName="GoOtherPage"></asp:LinkButton>		
  </ItemTemplate>
</asp:TemplateColumn>

Примерно такая конструкция, далее в ItemCommand проверяем, если нам пришла команда GoOtherPage, то находим контрол lSecretID и записываем в сесию

Session["SecretID"]=((Literal)(e.Item.FindControl("lSecretID"))).Text;
И делаем редирект куда надо, а там уже смотрим в сессию.

Главное при работе с сессией не забывай что она через некоторое время экспайрится, так чтоб у тебя не вышло Null Reference, всегда помни об этом
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33338397
Abuserrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<asp:TemplateColumn Visible="False">
   <ItemTemplate>
<asp:Literal ID="lSecretID" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.SecretID") %>'></asp:Literal>
   </ItemTemplate>
</asp:TemplateColumn>

<asp:TemplateColumn>
   <ItemTemplate>
<asp:LinkButton ID="ToNewPage" Runat="server" Text='go to other page' CommandName="GoOtherPage"></asp:LinkButton>		
  </ItemTemplate>
</asp:TemplateColumn>

Примерно такая конструкция, далее в ItemCommand проверяем, если нам пришла команда GoOtherPage, то находим контрол lSecretID и записываем в сесию

Session["SecretID"]=((Literal)(e.Item.FindControl("lSecretID"))).Text;
И делаем редирект куда надо, а там уже смотрим в сессию.

Главное при работе с сессией не забывай что она через некоторое время экспайрится, так чтоб у тебя не вышло Null Reference, всегда помни об этом
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33340811
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbuserrrГлавное при работе с сессией не забывай что она через некоторое время экспайрится, так чтоб у тебя не вышло Null Reference, всегда помни об этом
И, действительно, так происходит, точно так же как и с puplic переменными, что очень не приятно. Приходиться возращаться на первую страницу и отлистывать сначала. Качество приложения падает. Есть ли какой то выход из этой ситуации?
...
Рейтинг: 0 / 0
Использование переменной на разных страницах
    #33341826
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbuserrrГлавное при работе с сессией не забывай что она через некоторое время экспайрится, так чтоб у тебя не вышло Null Reference, всегда помни об этом
Я правильно понимаю, что единственный выход из этой ситуации - это делать записи переменной в базу данных?
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Использование переменной на разных страницах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]