5

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

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

现在,我希望用户能够通过复制带有 QueryString 的 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"]));
    }
}

这段代码的问题在于,当用户从 DropDownList 中选择不同的项目时,他或她选择的项目会被 Page_Load() 覆盖,因为我们现在在 URL 上有一个 QueryString。(我构建 QueryString,然后使用 Redirect() 方法到事件的同一页面)

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

我觉得这就像鸡或蛋的问题。

谢谢你。

4

1 回答 1

10

检查页面是否正在回发到服务器,以及您现有的逻辑,如下所示:

if(!IsPostBack && !String.IsNullOrEmpty(Request.QueryString["ProdID"]))
{
    ddlProduct.SelectedIndex = ddlProduct.Items.IndexOf(ddlProduct.Items.FindByValue(Request.QueryString["ProdID"]));
}
于 2013-11-14T20:45:46.997 回答