【问题标题】:How to change the QueryString on post back?如何在回发时更改 QueryString?
【发布时间】:2011-07-11 20:52:40
【问题描述】:

我想执行回发并将几个值添加到我的查询字符串中。我一直在使用重定向到同一个 URL 并简单地添加查询字符串参数,但是当我这样做时,我的视图状态被清除,我需要避免这种情况。

由于我正在使用的技术 (SharePoint),我必须使用查询字符串来传递我的参数。

我环顾四周,但没有找到关于如何使用不同的查询字符串参数完成回发的明确答案。有没有办法做到这一点?

【问题讨论】:

  • 完整的 asp.net 回发?没有ajax?
  • 为什么不传递查询字符串中的所有参数,然后根据此重新绑定数据?
  • 您能否澄清一下不同查询字符串的含义,您是想添加一些额外的参数还是将 x 替换为 y?
  • @izip,我可以做到这一点,但我将其保存以备不时之需。这似乎是不必要的复杂 IF 我可以找到一种方法来回发不同的查询字符串参数。
  • @almog.ori - 我可能需要添加新参数或更改现有参数的值。

标签: asp.net postback query-string


【解决方案1】:

只是搞砸了,但这会在提交表单之前通过修改主表单的 action 属性(在本例中为 ct101)添加查询字符串客户端。 示例代码不考虑进一步的回发..

<script type="text/javascript">
    var el = document.getElementById('ctl01');

    el.onsubmit = function (evt) {
        var url = $(this).attr('action');
        $(this).attr('action', url + '?sayHi=Hi');
    };

</script>

【讨论】:

    【解决方案2】:

    尝试使用 Server.Transfer 而不是 Response.Redirect。 Server.Transfer 方法还有第二个参数——“preserveForm”。如果您将此设置为 True,则使用诸如 Server.Transfer("WebForm2.aspx", True) 之类的语句,现有的查询字符串和任何表单变量仍可用于您要转移到的页面。

    所以基本上你可以转移到同一个页面,但是使用新添加的查询字符串参数你仍然可以访问旧值。

    【讨论】:

    • 我也是这么想的,但是当我到 Server.Transfer 并为第二个参数传递 true 时,我得到了 Stack Oveflow 异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2011-03-30
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多