目标是使用post数据从经典asp中弹出一个asp.net页面,但是,asp.net页面总是将Request.Form变量设置为空并显示RequestType get。
我已经从asp中删除了所有代码,测试了接收从asp.net页面上的html页面发送的表单变量,这很好用。将相同的表单html复制到asp页面仍然不提供request.form数据和RequestType get
<html>
<head></head>
<body>
<form method="post" name="form" action="http://localhost:51307">
<input name="uid" value="1" />
<input type="submit" name="Submit" />
</form>
</body>
asp网站正在使用框架,表单是从子框架发送的,我不确定这是不是问题。
2。 假设这有效,我曾想过在asp中提交一个表单并使用表单的onsubmit事件来弹出页面,该页面将表单变量作为发布数据发送。这是最好的方法吗?
更新 这里的框架似乎有问题,我已经从框架页面中的表单发布到另一个经典的asp页面,然后从这个页面重定向到asp.net页面。
答案 0 :(得分:2)
这可能是因为IE浏览器默认禁用“在不同域中导航窗口和框架”,这意味着由于安全原因您无法传递表单数据。
答案 1 :(得分:0)
ASP.NET需要设置某些表单字段(通常为隐藏字段,但HTTP POST显然不知道区别),以便将入站请求视为有效,从而填充相关变量。
如果我记得,你需要设置__EVENTTARGET,__ EVENTARGUMENT和__VIEWSTATE。
然后,您的ASP.NET代码需要能够处理发送的内容,因为默认处理程序将至少在__VIEWSTATE
中存在某些内容。因此,您需要覆盖页面中的ViewState处理程序。我以后可以在工作时更新更多信息,因为我知道我之前已经这样做了。
答案 2 :(得分:0)
问题在于重定向。重定向页面时,它会创建一个GET请求而不是POST请求,因此不会有任何表单数据。
您的选择是:
Request.Form
集合对应的表单,并在body onload
事件期间使用Javascript将其提交到ASP.NET页面。