2009-05-06 58 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/