request.querystring的问题

时间:2014-03-17 12:13:54

标签: c#

我的查询字符串有问题。我有一个带有3个组合框的aspx站点。更改值时,查询字符串获取所选值。

但是当我更改值时,网址不会立即更新:

例如:

网页名称:test.aspx

Values combobox 1: Mo, Di, Mi
Values combobox 2: 1, 2, 3
Values combobox 3: A, B, C

现在我改变了:

Combobox 1 -> Mo -> URL still test.aspx (but value of combobox is Mo!)
Combobox 2 (first ist still Mo) -> 1 -> Url gets test.aspx?Tag=Mo

网址似乎更新了previuos值而不是实际值。

我在Page_LoadComplete

上阅读了查询字符串

那么是否有意见加载实际查询字符串的页面?我想用wkhtmltopdf生成pdf页面但是当我接受输入url Request.url时,生成的pdf也不是最新的......

感谢并抱歉我的英语不好

更新

这是我更改查询字符串的时候。

protected void DD_Status_SelectedIndexChanged(object sender, EventArgs e)
    {
        PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
        isreadonly.SetValue(this.Request.QueryString, false, null);
        Request.QueryString["Status"] = this.DD_Status.SelectedValue.ToString();

当我在Page_LoadComplete

上阅读查询字符串时,这是我
 if (Request.QueryString["Status"] != null)
            DD_Status.SelectedValue = Request.QueryString["Status"];

Postback未在页面的任何位置使用

1 个答案:

答案 0 :(得分:0)

即使尝试,这行代码是什么?:

Request.QueryString["Status"] = this.DD_Status.SelectedValue.ToString();

当在服务器上收到请求时,URL已经被解析。您无法在服务器上更改该URL,并希望以某种方式在客户端上更新它。简而言之,Request.QueryString用于从获取值发布到服务器的URL,而不是将值保存到 URL。

如果要将值保存在稍后页面事件可以看到的位置,只需将其保存到类级变量即可。像这样:

public class SomePage
{
    private string SelectedStatus { get; set; }

    protected void DD_Status_SelectedIndexChanged(object sender, EventArgs e)
    {
        SelectedStatus = this.DD_Status.SelectedValue.ToString();
    }

    protected void Page_LoadComplete(object sender, EventArgs e)
    {
        DD_Status.SelectedValue = SelectedStatus;
    }

    // other code in the code-behind class
}

虽然现在看着这个,但你仍然不清楚你想要做什么。逻辑上看起来你正试图将DD_Status.SelectedValue设置为自己。你不需要这样做,它已经具有了它的价值。