Base64字符串中无效的ViewState /无效字符

问题描述:

我已阅读了多个类似的帖子。例如:Base64字符串中无效的ViewState /无效字符

但没有为我提供的解决方案。我有一个想法出了什么问题,我会尽力遍历我的代码。

这一天只发生在少数用户身上,他们都使用IE。 Firefox的工作原理应该如此。

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

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

该脚本将用户重定向到支付网关是这样的:(paymentData是一个.NET对象的JSON序列化)

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); 
     }    
    }); 
} 

我猜这段代码打破了与视图状态有关的事情,但我无法弄清楚如何或为什么。有什么建议么?

+0

页面上的多个表单在'ASP.NET'中无效 – cjk 2012-08-07 15:09:49

+0

我知道,但是这第二种形式是在asp.net表单标签之外呈现的。 – Martin 2012-08-07 15:12:21

+0

因此,当服务器收到该表单的内容时,ViewState不会被返回,因此出现错误。 – cjk 2012-08-07 15:13:18

我刚刚有一个用户的这个问题。它只发生在IE上,而不是所有的用户。 Firefox和Chrome工作正常。

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

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

问题将被修复。