Передача переменной со страницы на страницу с использованием ASP.NET (C #) без использования QueryString - PullRequest
3 голосов
/ 05 ноября 2010

Нужны советы по передаче переменных со страницы на страницу без использования QueryString.Сканеры, такие как Google, попадают в строки запросов, найденные в URL.Я пытаюсь уйти от его использования.Есть ли другой предложенный метод для передачи переменных?Я думал об использовании переменных сеанса, но это просто для передачи переменной от страницы к странице, и они не всегда будут одинаковыми.Любые идеи?

С другой стороны, я не могу сделать это с помощью форм.Я использую главную страницу с формой, встроенной в главную страницу, а также страницы с контентом.Если Microsoft не обновил его, чтобы вы могли несколько форм на одной странице.

Ответы [ 8 ]

4 голосов
/ 05 ноября 2010

Вы можете посмотреть на использование ASP.NET Routing (что может быть сделано без MVC) - тогда вы можете иметь путь с данными, но без строки запроса;как пути здесь (которые на самом деле MVC, но применяется та же логика).

Вы не можете использовать формы - вы можете просто использовать jQuery или аналогичный для создания форм на лету.

2 голосов
/ 05 ноября 2010

Как насчет хранилища сессий ASP.NET ??

Вы можете сохранить материал в сеансе на одной странице и извлечь его оттуда на второй странице.

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

См .:

1 голос
/ 05 ноября 2010

Существует четыре способа передачи данных между страницами ASP.Net.

Два из них локализованы на одной странице, поэтому наличие двух вкладок браузера будет иметь разные параметры:

  • Использование строки запроса, либо в качестве параметров строки запроса (что вам не нужно), либо с использованием пути (то есть маршрутизация, которая описана в другом ответе);

  • Использование параметров POST (формы). Они невидимы для веб-сканеров;

Две из них занимают несколько страниц:

  • Сессия ASP.Net;

  • Куки.

Я думаю, что вам нужны параметры POST (формы). Для этого потребуется изменить ссылки на страницах, где вы передаете эти параметры в формы. Ruby on Rails делает что-то подобное, предоставляя общий механизм, который создает форму в фоновом режиме и позволяет передавать параметры POST без фактического создания формы . Когда я, например, создать ссылку на http://google.com с методом, установленным на POST, он сгенерировал следующий HTML:

<a href="http://google.com" onclick="
    var f = document.createElement('form');
    f.style.display = 'none';
    this.parentNode.appendChild(f);
    f.method = 'POST';
    f.action = this.href;
    var m = document.createElement('input');
    m.setAttribute('type', 'hidden');
    m.setAttribute('name', 'param1');
    m.setAttribute('value', 'value1');
    f.appendChild(m);
    f.submit();
    return false;">Google.com using POST</a>

Я немного отформатировал вышеупомянутое, но на HTML-странице это выглядело бы как одна длинная строка. document.createElement('input'); до appendChild позволяет вам установить параметры, которые вы хотите передать следующим стр.

0 голосов
/ 28 февраля 2012

Ваша главная страница имеет текстовое поле и кнопку, как ....

<asp:TextBox ID="input" runat="server"></asp:TextBox>
<asp:Button ID="Bt" runat="server" Text="Button" PostBackUrl="~/Getvalue.aspx" />

Теперь вы можете получить значение TextBox с предыдущей страницы до GetValue.aspx

  1. На странице aspx

<%=Request.Form["input"]%>

или

  1. В кодовом файле

TextBox1.Text = Request.Form["input"]; (TextBox1 is in  "GetValue.aspx" )
0 голосов
/ 29 января 2011

Вы можете использовать один из следующих вариантов:

  1. Сеанс
  2. Cookies
  3. ViewState (зависит от того, как вы перенаправляете по страницам)
  4. База данных
  5. Диск
0 голосов
/ 06 ноября 2010

В зависимости от необходимости вы также можете сделать это с помощью Application State, так как вы, вероятно, догадаетесь, что доступ - это весь пользователь / сессия:

 Application.Lock();
 Entity e = new Entity("mine");
 Application["myVar"] = e;
 Application.UnLock();
0 голосов
/ 06 ноября 2010

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

0 голосов
/ 05 ноября 2010

Звучит так, как будто вы хотите использовать Cookie. Если информация защищена, вы можете сохранить значения в базе данных и сохранить уникальный идентификатор записи базы данных в файле cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...