好的......我知道嵌套标签不受官方支持。但请留在我这一个..
我有一个带有标准< form runat = server>的ASP.NET网页标签在顶部。我通过服务器端的HttpWebRequest(代码隐藏)从第三方源中提取表单(和相关字段)。我可以验证我得到的数据包含< form> tag - 通过Trace语句。然后我将数据分配给我的文字:
Dim objRequest As System.Net.HttpWebRequest = System.Net.WebRequest.Create(url) Dim objResponse As System.Net.WebResponse objRequest.Method = "POST" Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData.ToString) objRequest.ContentType = "application/x-www-form-urlencoded" objRequest.ContentLength = byteArray.Length Dim dataStream As Stream = objRequest.GetRequestStream() dataStream.Write(byteArray, 0, byteArray.Length) dataStream.Close() objResponse = objRequest.GetResponse() Dim streamRead As New StreamReader(objResponse.GetResponseStream()) Dim strResponse As String = streamRead.ReadToEnd() me.litCMSForm.Text = strResponse
当呈现页面时,.NET以某种方式删除了< form>文字内的标记。
我也尝试过分配变量" strResponse"要显示的公共变量,它也删除了标记。我尝试将变量分配给asp:Label也没有运气。我尝试将值分配给" PreRender"功能没有成功。
对此的任何想法以及为什么.NET正在剥离< form>标记
谢谢!
答案 0 :(得分:1)
您是对的 - 不支持嵌套表单标记。你可以做的是生成JavaScript,将字符串传递给ASP.NET表单之外的HTML容器,或者更好的是,将其输出到独立的iframe。
答案 1 :(得分:1)
我遇到了同样的问题。通过在我真正想要插入的表单之前添加另一个表单,我能够解决这种情况。看起来ASP只是非常活泼,足以剥离它发现的第一家公司。 也许这对你有用:
me.litCMSForm.Text = "<form name='fakeOut'></form>" + strResponse
我实际上我的表单代码有点发烧友(我给了它一个动作和一个隐藏的输入)。我没有继续测试,看看有什么可以带走,因为它有效。