【发布时间】:2018-08-29 16:44:38
【问题描述】:
我正在设置一个简单的 POST 方法,以便在处理代码隐藏中的 C# 之前将信息发送到表单。预期的结果是带有一些简单值的纯文本字符串:
function postTasks() {
var postdata = $("#taskReturnDiv").text();
try {
$.ajax({
type: "POST",
url: "calendar.aspx",
cache: false,
data: postdata,
dataType: "text",
error: getFail
});
}
catch (e) {
alert(e);
};
function getFail(data, textStatus, jqXHR) {
alert(textStatus);
};
};
但是,尝试阅读以下内容:
string processTaskPostback(HttpContext context)
{
string taskString = String.Empty;
HttpContext.Current.Request.InputStream.Position = 0;
using (StreamReader inputStream = new StreamReader(HttpContext.Current.Request.InputStream))
{
taskString = inputStream.ReadToEnd();
return taskString;
}
}
导致 taskString 包含一个似乎是对 statebag 的引用而不是预期字符串的值:
__VIEWSTATE=RGl0btFvBz93yS%2BQp%2FHpk1pT9AohsFsyJI90RjT3BvtWkw3DPYDjGhqIGHSADWaCoXsRXxWSmdlwsbebI7qMhxn%2FEKZiDTH9RB6TB97HFurOenlTG3sXGe6r2a2MqaTCIkYUZVbLp8FQuyPQmG%2FdKCXeUrjUIYUGBoD%2FvB8xF3ThhppKd3OAsPydvVQkB4z4CkygDtcZwP6IckX52YX%2BE3ttAEOOUVfjjMY5lXaiB56EwldbcRvJP6nIKz1SeQodGNgeYSOFnMO1zht0ouMRBbUYb5K3fAuB5zHFogpmyfd4K9whgnGKwcyf1dXzwlli&newEvent_title=1&newEvent_date=2018-03-21&newEvent_description=1&addNewPersonalEvent=Add+Event&__VIEWSTATEGENERATOR=B66867E1&__EVENTVALIDATION=9z3SFY4WzFb%2BAXZpcZVK5W7ZwbkYcJ3I43tG39FSX4H7PRykGGlQ4TS7%2F%2Bfs34wWJXo1WSdDRheOljoJFm8Cc6B0Q%2Bwl3LbkKGAKt1ifl%2F6B5XBxW9eUwE%2BeYa0dlJIiY08t05OKyGu%2FF03cZOgZnbSNYMlTcajFwaWwnU5PHKLsXd%2FNVWyxfvoEy%2BAFmFRc
我在这里缺少什么?
【问题讨论】:
-
asp.net以前默认包含viewstate,可以关闭:stackoverflow.com/a/647456/264607。如果您正在从包含视图状态的页面发布帖子,那么它将发送它。它通常作为表单中的隐藏字段放入,您在 taskReturnDiv 中有表单吗?
-
@BlackICE 不,相反。
taskReturnDiv在表单中。 -
@BlackICE 关闭视图状态会影响我在
HttpContext.Current领域中使用会话数据吗? -
@BlackICE 顺便说一句,关闭 Viewstate 没有任何效果。
-
尝试查看源代码,看看你是否在 taskReturnDiv 中有那些隐藏的输入
标签: javascript c# jquery asp.net post