Base-64字符串中的ViewState / Invalid字符无效

时间:2012-08-07 15:05:56

标签: c# asp.net viewstate

我已经阅读了多篇类似的帖子。例如:

但没有人为我提供解决方案。我知道出了什么问题,我会尝试浏览我的代码。

这只发生在一天的少数用户身上,并且所有用户都使用IE浏览器。 Firefox可以正常工作。

我有一个aspx页面,其中包含我的网上商店的注册表单。当用户点击“继续”时,我会进行回发验证数据。如果一切都有效,我运行以下代码:

public void Proceed(Object sender, EventArgs e)
{
   if (IsValid)
   {
      SaveCustomerInfo();
      ScriptManager.RegisterStartupScript(
          this, this.GetType(),
          "RedirectPaymentGateway",
          "RedirectPaymentGateway('" + paymentData + "');", true);
   }
}

此脚本将用户重定向到支付网关,如下所示:

function RedirectPaymentGateway(paymentData) {
    $(document).ready(function() {
        try {
            var div = document.createElement('div');
            div.innerHTML = paymentData;                
            var formDataObj = jQuery.parseJSON(div.firstChild.nodeValue);

            var form = "<form>FORM CONSTRUCTION</form>";

            $('#pnlPaymentGateway').html(form);
            $('#pnlPaymentGateway').submit();
        }
        catch (e) {
            alert(e);
        }            
    });
}

paymentData是.net对象的JSON序列化。)

我猜这段代码打破了与viewstate相关的东西,但我无法弄清楚如何或为什么。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我刚与用户讨论过这个问题。它只发生在IE上,但不适用于所有用户。 Firefox和Chrome工作正常。

要解决此问题,请打开IE并执行以下操作:

  1. 点击工具。 (您可能需要首先通过右键单击顶部栏来启用菜单栏。)
  2. 点击“Internet选项”。
  3. 单击“高级”选项卡。
  4. 点击重置。
  5. 选中此框以删除个人设置。
  6. 确认,直到回到IE。
  7. 重新启动浏览器。
  8. 问题将得到解决。