如何在.NET ASP C#中正确使用QueryString?

时间:2013-11-14 20:42:41

标签: c# asp.net webpage response.redirect request.querystring

我在.NET中使用ASP和C#创建了一个Web表单。此表单具有 DropDownList 控件,其 AutoPostBack 属性设置为 True

当用户从 DropDownList 中选择一个项目时,会显示表单上的某些数据。

现在,我希望用户只需复制http://www.site.com?ProdID=1234上包含QueryString的网址即可分享他或她的数据。

我已经做了以下尝试来实现这个目标:

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()方法用于事件上的同一页面

所以我的问题是:当用户从DropDownList更改所选项目并在所选项目的表单上显示正确的数据时,是否可以动态更改URL的查询字符串?

我觉得这就像鸡肉或鸡蛋一样。

谢谢。

1 个答案:

答案 0 :(得分:10)

检查页面是否与现有逻辑一起回发到服务器,如下所示:

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