首页 文章

如何在分配到HTML输入字段VB.NET时停止自动HTML编码

提问于
浏览
0

我必须向第三方网站提交HTML表单,其中一个隐藏字段是XML字符串 . XML需要在发送给第三方之前进行转义 .

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

或者更好的是,如何通过隐藏字段发送转义的XML .

XML

<systemCode>APP</systemCode>

基本分配给隐藏的输入字段

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

当我对HTML进行编码时也是如此

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

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

3 回答

  • 4

    不要使用HTMLEncode as well !用它 alone

    就像是:

    '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>"
    
  • 0

    最后,我使用了一个文字然后HTMLEncoding XML字符串,然后将HTML表单变量分配给文字文本字段 . 有点像下面:

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

    不优雅,但它正在规避问题 .

  • 0

    您不了解HTML是完全转义还是部分转义 - the same data gets submitted either way .

    这两个领域:

    <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是相同的 .

    Demo:
    http://jsfiddle.net/gilly3/Xdj5E/

相关问题