2009-05-06 25 views
0

我必须将HTML表单提交给第三方网站,其中一个隐藏字段是XML字符串。 XML在发送给第三方之前需要转义。如何在分配给HTML输入字段时停止自动HTML编码VB.NET

但是,当我将纯XML添加到表单字段中时,它会为我转义它。那么当我使用HTMLEncode时,我自己的一部分是双重转义的。如何防止似乎从.NET变成自动转义。

甚至更​​好的如何通过隐藏字段发送转义的XML。

XML

<systemCode>APP</systemCode> 

基本分配给隐藏输入字段

&lt;systemCode>APP&lt;/systemCode> 

当我HTML编码它以及

&amp;lt;systemCode&amp;gt;APP&amp;lt;/systemCode&amp;gt; 

我可以看到发生了什么 - 但我不知道如何预防它?

回答

0

最后,我使用的文字,然后HTMLEncoding XML字符串之前分配一个HTML表单变量字面文本字段。有点像如下:

portalReq.Text = "<input type=""hidden"" name=""portalReq"" value='" & HTMLENCODE(RequestXML) & "' />" 

不优雅,但它是绕过这个问题。

4

请勿使用HTMLEncode 以及!使用它单独

是这样的:

'Setting value: 
hdnField.Value = Server.HtmlEncode("<systemCode>APP</systemCode>") 
'Outputs: &amp;lt;systemCode&amp;gt;APP&amp;lt;/systemCode&amp;gt; 

'Retrieving encoded value: 
Dim escaped as string = Request.Form("hdnField") 
'Retrieves: &lt;systemCode&gt;APP&lt;/systemCode&gt; 

'Retrieving decoded value: 
Dim myValue As String = Server.HtmlDecode(Request.Form("hdnField")) 
'Retrieves: "<systemCode>APP</systemCode>" 
+1

再说一次....但这次的感觉! ;) – 2009-05-06 09:56:36

0

您不必担心HTML输出。只担心表单中提交了哪些数据。无论HTML是完全转义还是部分转义 - 提交的数据都是相同的数据

这些领域的两个:

<input name="xml" value="&lt;systemCode>APP&lt;/systemCode>" /> 
<input name="xml" value="&lt;systemCode&gt;APP&lt;/systemCode&gt;" /> 

获取提交的:

xml=%3CsystemCode%3EAPP%3C%2FsystemCode%3E

这是语言无关 - 这是浏览器的行为。当浏览器解析HTML时,它实际上将两个字段标准化为具有相同的HTML。如果您查看页面的源代码,您将看到源HTML在输入之间有所不同,但如果您阅读form.innerHTML值,则会看到解析的HTML是相同的。

演示:
http://jsfiddle.net/gilly3/Xdj5E/