【发布时间】:2016-06-24 00:14:17
【问题描述】:
我已经阅读了多个类似的帖子。例如:
但没有人为我提供解决方案。我知道出了什么问题,我会尝试遍历我的代码。
这种情况每天只发生在少数用户身上,而且他们都使用 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 序列化。)
我猜这段代码会破坏与视图状态相关的内容,但我不知道如何或为什么。有什么建议吗?
【问题讨论】:
-
一个页面上的多个表单在
ASP.NET中无效 -
我知道,但是第二个表单是在 asp.net 表单标签之外呈现的。
-
所以当服务器接收到该表单的内容时,ViewState 没有被返回,因此出现了错误。
-
但是我不能理解的是服务器并没有得到那个表单的内容,表单是在回发后通过jQuery渲染和提交的。为什么这对几乎所有用户都有效,除了少数不幸的用户?