我正在从旧的ASP(在VBScript中)迁移一个网站,并且我必须使用iFrame以保持旧容器在新容器内工作。
在aspx页面上我有一个带有runat =“server”属性的iFrame,可以在代码隐藏文件中使用它。
<iframe id="frmLoader" runat="server" scrolling="auto" width="100%" height="600px"></iframe>
现在的问题是,为了获得某些功能,我必须POST到一个页面(来自旧网站),使其以不同的方式呈现,从而提供对POST的响应。
以下代码驻留在Page_Load中,其中包含postData对象中的参数
byte[] encData = new ASCIIEncoding().GetBytes(postData);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = encData.Length;
Stream dataStream = req.GetRequestStream();
dataStream.Write(encData, 0, encData.Length);
dataStream.Flush();
dataStream.Close();
WebResponse res = req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string s = sr.ReadToEnd();
frmLoader.InnerHtml = s;
这里的痛苦是我似乎无法将字符串渲染到iframe中。 通过调试我检查了是否应该出现的东西应该出现,但它不会:p
任何人都知道我如何将字符串解析为iframe?
另外,当在iframe中触发功能时,页面应该保留在那里,并响应来自原始站点的其他帖子(旧的asp) 我一直在寻找,但没有找到答案。
创建一个处理程序意味着我必须为我希望使用的每个旧页面创建一个自定义处理程序吗?
我对深入的网络开发没有经验:)
在旧的ASP中,以前的开发人员将大量功能放入1页,通过使用post消息,我可以调用这些函数,每次都呈现不同的页面。
可以像你说的那样构建一个处理程序来接受一堆参数来改变帖子吗?
编辑:
我刚刚注意到另一个问题。处理程序无权访问数据所在的会话以生成我需要的帖子。每个动作都有不同的帖子......
答案 0 :(得分:4)
你手动试过吗?请尝试以下方法:
<iframe>text</iframe>
如何在浏览器中显示?
这是因为iframe无法正常工作。像img标签一样,它需要一个“src”属性来说明内容的来源。
您可以创建.ashx文件(HttpHandler),让它执行POST并返回结果。您的iframe将为<iframe src="yourHandler.ashx"/>
。