2009-05-06 3 views
0

Ich muss ein HTML-Formular an eine Website von Drittanbietern senden, und eines der ausgeblendeten Felder ist eine XML-Zeichenfolge. Der XML-Code muss erst entschlüsselt werden, bevor er an den Drittanbieter gesendet wird.So stoppen Sie die automatische HTML-Codierung beim Zuweisen von HTML-Eingabefeldern VB.NET

Wenn ich jedoch das einfache XML zum Formularfelder hinzufüge, entkommt es mir halbwegs. Also, wenn ich HTMLEncode selbst benutze, wird ein Teil des XML doppelt maskiert. Wie verhindere ich das automatische Entweichen, das von .NET scheint.

Oder noch besser, wie sonst kann das maskierte XML über das versteckte Feld senden.

XML

<systemCode>APP</systemCode> 

Grund Zuordnung zu versteckten Eingabefeld

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

Wenn ich es HTML Encode auch

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

ich sehen kann, was passiert ist - aber ich weiß nicht wissen, wie man es verhindert?

Antwort

0

Am Ende habe ich eine wörtliche und dann HTMLEncoding die XML-Zeichenfolge, bevor Sie eine HTML-Formularvariablen an das wörtliche Textfeld zugeordnet. Ein bisschen wie unten:

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

Nicht elegant, aber es umgeht das Problem.

4

Verwenden Sie nicht HTMLEncode sowie! Verwenden Sie es allein!

Etwas wie:

'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

Sagen Sie es noch einmal .... aber diesmal mit Gefühl! ;) –

+1

Ich werde, wenn du noch einmal abstimmen wirst ... diesmal mit Gefühl!: P – Cerebrus

+0

Hallo, Ich benutze HTMLEncode nicht so gut wie alles andere - ich benutze es alleine, aber wie gesagt, es gibt etwas anderes automatisch, das das

0

Sie müssen sich keine Sorgen über die HTML-Ausgabe machen. Sorgen Sie sich nur darum, welche Daten im Formular übermittelt werden. Es spielt keine Rolle, ob der HTML-Code vollständig oder teilweise ausgeblendet ist. Die gleichen Daten werden auf beide Arten gesendet.

Beide Felder:

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

erhalten, wie vorgelegt:

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

Dies ist sprachunabhängig - es Browser Verhalten. Wenn der Browser den HTML-Code analysiert, normalisiert er beide Felder so, dass sie denselben HTML-Code haben. Wenn Sie die Quelle der Seite anzeigen, sehen Sie, dass der Quell-HTML-Code zwischen den Eingaben unterschiedlich ist. Wenn Sie jedoch den Wert form.innerHTML lesen, sehen Sie, dass der analysierte HTML-Code identisch ist.

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

Verwandte Themen