首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在为HTML输入字段VB.NET赋值时停止自动HTML编码

问如何在为HTML输入字段VB.NET赋值时停止自动HTML编码
EN

Stack Overflow用户
提问于 2009-05-06 09:29:00
回答 3查看 6.1K关注 0票数 0

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

但是,当我将普通XML添加到表单字段时,它会对其进行半转义。因此,当我自己使用HTMLEncode时,部分XML是双重转义的。如何防止从.NET中出现的自动转义。

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

XML

代码语言:javascript
复制
<systemCode>APP</systemCode>

对隐藏输入字段的基本赋值

代码语言:javascript
复制
&lt;systemCode>APP&lt;/systemCode>

当我也对它进行HTML编码时

代码语言:javascript
复制
&amp;lt;systemCode&amp;gt;APP&amp;lt;/systemCode&amp;gt;

我能看到发生了什么--但我不知道如何防止它发生?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-19 07:58:05

最后,我使用了一个文字,然后对XML字符串执行HTMLEncoding操作,然后将一个HTML form变量分配给文字文本字段。有点像下面这样:

代码语言:javascript
复制
portalReq.Text = "<input type=""hidden"" name=""portalReq"" value='" & HTMLENCODE(RequestXML) & "' />"

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

票数 0
EN

Stack Overflow用户

发布于 2009-05-06 09:54:17

也不要使用HTMLEncode ,!单独使用它!

类似于:

代码语言:javascript
复制
'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>"
票数 4
EN

Stack Overflow用户

发布于 2012-06-09 01:57:34

您不需要担心HTML输出。只需关心表单中提交了哪些数据。HTML是完全转义的还是部分转义的并不重要-无论以哪种方式都会提交相同的数据。

这两个字段:

代码语言:javascript
复制
<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。如果查看页面的源代码,您将看到不同输入的源form.innerHTML有所不同,但是如果您读取HTML值,您将看到解析后的HTML值是相同的。

演示:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/828812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档