2010-07-25 4 views
1

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

<a href="Page2.aspx?WONumber=12345"> 

есть ли лучший способ?

Я думал о создании базового слоя с несколькими опорами и обновлению базового слоя?

спасибо.

+1

лучше в смысле waht? как ребята говорят, что вы беспокоитесь о вышеуказанной безопасности маршрута, об универсальности, о том, что у вас нет сильной типизации, о том, что вы определяете имя своих параметров в нескольких местах ... любое «лучшее» решение зависит от того, что проблема должен решить. –

ответ

0

Вы можете зашифровать параметр строки запроса, если безопасность ваша забота.

Или вы можете использовать другие держатели, такие как p.cambell говорит выше (сессия & cookie).

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

Просто зависит от ваших требований приложения.

Другое дело, что я использовал <asp:panel>, в основном используя одну страницу, как если бы это были несколько страниц. Таким образом, у меня также есть доступ к viewstate для хранения переменных. (Всякий раз, когда пользователь нажимает «next» или что бы они ни нажимали, чтобы перейти к следующей странице, я просто спрячу панель, в которой они находятся, и покажу панель, в которой они хотят перейти на свойство [visible = true/false])

1

Похоже, вы хотите принять аргумент запроса и использовать его на последующих страницах.

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

  • магазин значение в Session. Рассмотрите Session["WoNumber"] = Request.QueryString["WONumber"].ToString();

  • хранить значение в Cookies. Вы могли бы использовать что-то вроде: Response.Cookies["WoNumber"].Value = Request.QueryString["WONumber"].ToString();

1

Это действительно зависит от того, откуда вы получаете значение. Вы можете создать URL-адрес, используя UriBuilder, или, если это достаточно просто, конкатенация строк может быть в порядке (хотя вам необходимо убедиться, что значения Server.UrlEncode).

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

<a href="Page2.aspx?WONumber=<%= TheMagicOrderNumber %> 

с константой, определенной в коде-за:

protected const int TheMagicOrderNumber = 12345 
1

Если возражение является ремонтопригодность «волшебной строки» URLS, и вы будете готовы использовать кнопку вместо якорь, вы можете сделать хуже, чем

<form method="GET" action="Page2.aspx"> 
    <input type="hidden" name="WONumber" value="12345" /> 
    <input type="submit" value="Navigate" /> 
</form> 

этот метод обобщается в строку запроса любой сложности с любым числом параметров.

1

Существует большая статья, я наткнулся на несколько месяцев назад, когда я искал для обеспечения повышенной безопасности с querystrings ...

http://devcity.net/Articles/47/1/encrypt_querystring.aspx

Это очень хорошая статья, и имеет бонус автор предлагает примеры кода в C# и VB.NET.

Есть моменты, когда я предпочитаю использовать querystrings через сеансы ... небольшое количество объектов сеанса в порядке, но слишком много, и это начинает немного утомительно для отладки проблем.

Смежные вопросы