2013-11-14 5 views
5

У меня есть веб-форма в .NET с использованием ASP и C#. Эта форма имеет DropDownList управление с ее AutoPostBack свойство настроено на True.Как правильно использовать QueryString в .NET ASP C#?

Некоторые данные в форме отображаются, когда пользователь выбирает элемент из DropDownList.

Теперь я хочу, чтобы пользователь мог поделиться своими данными, просто скопировав URL-адрес, на котором есть QueryString, например http://www.site.com?ProdID=1234.

я сделал следующее, чтобы попытаться сделать это:

protected void Page_Load(object sender, EventArgs e) 
{ 
    // check if the URL has a QueryString item if yes the use it. 
    if (!String.IsNullOrEmpty(Request.QueryString["ProdID"])) 
    { 
     ddlProduct.SelectedIndex = ddlProduct.Items.IndexOf(ddlProduct.Items.FindByValue(Request.QueryString["ProdID"])); 
    } 
} 

Проблема с этим кодом является то, что, когда пользователь выбирает другой элемент из DropDownList его или ее выбранный элемент получает перезаписаны Page_Load (), так как у нас теперь есть URL-адрес QueryString. (Я создаю QueryString, а затем использую метод Redirect() на той же странице в событии).

Итак, мой вопрос здесь: возможно ли изменять строку запроса URL на лету, когда пользователь изменяет выбранную из списка DropDownList и отобразить правильные данные в форме для выбранного элемента?

У меня такое ощущение, что это похоже на проблему с курицей или яйцом.

Спасибо.

+0

'если (Page.IsPostBack && String.IsNullOrEmpty (Request.QueryString [ "ProdID"])) ' – asawyer

ответ

10

Проверьте, является ли страница размещения на сервер вместе с существующей логикой, как это:!

if(!IsPostBack && !String.IsNullOrEmpty(Request.QueryString["ProdID"])) 
{ 
    ddlProduct.SelectedIndex = ddlProduct.Items.IndexOf(ddlProduct.Items.FindByValue(Request.QueryString["ProdID"])); 
}