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);
}
});
}
我猜这段代码打破了与视图状态有关的事情,但我无法弄清楚如何或为什么。有什么建议么?
答
我刚刚有一个用户的这个问题。它只发生在IE上,而不是所有的用户。 Firefox和Chrome工作正常。
要解决此问题,打开IE浏览器并执行以下操作:
- 点击工具。 (您可能需要先通过右键单击顶部栏启用菜单栏。)
- 单击Internet选项。
- 单击高级选项卡。
- 单击重置。
- 选中该框以删除个人设置。
- 确认,直到回到IE。
- 重新启动浏览器。
问题将被修复。
页面上的多个表单在'ASP.NET'中无效 – cjk 2012-08-07 15:09:49
我知道,但是这第二种形式是在asp.net表单标签之外呈现的。 – Martin 2012-08-07 15:12:21
因此,当服务器收到该表单的内容时,ViewState不会被返回,因此出现错误。 – cjk 2012-08-07 15:13:18