如何在.NET ASP C#中正确使用查询字符串?

5
我有一个使用ASP和C#编写的.NET Web表单。这个表单有一个DropDownList控件,它的AutoPostBack属性设置为True。
当用户从DropDownList中选择一个项目时,表单上显示一些数据。
现在,我希望用户只需复制带有查询字符串的URL(如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"]));
    }
}

这段代码的问题在于,当用户从下拉列表中选择其他项时,他或她选择的项目会被页面加载(Page_Load())覆盖,因为现在URL上有一个QueryString。(我建立了QueryString,然后在事件(Event)上使用Redirect()方法重定向到同一页面)
所以我的问题是:是否可能在用户更改下拉列表中选择的项时动态更改URL的查询字符串,并为所选项目在表单上显示正确的数据?
我有这样的感觉,这就像鸡和蛋的问题。
谢谢。

if(!Page.IsPostBack && !String.IsNullOrEmpty(Request.QueryString["ProdID"])) - asawyer
1个回答

10

检查页面是否向服务器进行了回发,以及使用您现有的逻辑,例如:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接