我正在尝试使用javascript函数发送一个guid数组作为postdata。接收的aspx页面需要处理这些数据。
调用该页面的javascript如下:
function(webadress, guidarray) {
var params = 'menubar=no,status=no,toolbar=no,resizable=no, scrollbars=no';
var win = document.createElement("form");
win.target = 'Map';
win.method = 'POST';
win.action = webadress;
var winInput = document.createElement('input');
winInput.type = 'text';
winInput.name = 'guidcollection';
winInput.value = guidarray;
win.appendChild(winInput);
win.setAttribute("target", "_blank");
window.open(webadress, '', params);
win.submit();
}
aspx页面尝试读取帖子数据如下:
protected void Page_Load(object sender, EventArgs e)
{
object PostGuids = HttpContext.Current.Request.Form["guidcollection"];
// Do something with PostGuids
}
不知怎的,它失败了,当我调试aspx页面时,我发现没有定义 HttpContext 。使用fiddler我可以确定没有设置sessionId。我看到消息“此请求未发送任何cookie数据”。在Cookies选项卡中。
我该怎么做才能收到帖子数据?该网站的要求之一是不允许客户端上的cookie数据。是否可以在没有sessionId的情况下接收Post数据?或者我应该寻找像ViewState这样的替代品吗?使用查询字符串将不起作用,因为数据的长度将超过查询字符串的2048字符限制。
答案 0 :(得分:0)
我设法通过以下更改来实现此目的:
function(webadress, guidarray) {
var params = 'menubar=no,status=no,toolbar=no,resizable=no, scrollbars=no';
var win = document.createElement("form");
win.target = 'Map';
win.method = 'POST';
win.action = webadress;
var winInput = document.createElement('input');
winInput.type = 'text';
winInput.name = 'guidcollection';
winInput.value = guidarray;
win.appendChild(winInput);
document.body.appendChild(win);
window.open(webadress, 'Map', params);
win.submit();
}
和服务器端:
protected void Page_Load(object sender, EventArgs e)
{
if (this.Request.Form.HasKeys())
{
object PostGuids = this.Request.Form["guidcollection"];
// Do something with PostGuids
}
}
我仍然不知道为什么 HttpContext 仍未定义,但这样我可以正确访问guid数据。如果有人可以向我解释,我很乐意接受这个作为答案。