2010-12-10 3 views
2

Einstellung Ich habe eine ASP.NET Web-Anwendung und an einem bestimmten Punkt, den ich dies tun:ASP.NET Zitat Zeichencodierung führt zu Problemen, wenn ein Steuer Eigentum

mycontrol.stringparameterforjscript = "document.getElementById('" + myotherparam + "').value = 'Hello'"; 

Das Problem ist, dass dieses Ding funktioniert nicht. Wie Sie sehen, setzt dies ein JavaScript in einem Ereignis eines Tags. Nun, wenn die Seite redered das Problem ist, dass meine Parameter wie folgt aussehen:

<textarea onfocus="document.getElementById(&#39;myvalue&#39;).value = &#39;Hello&#39;"></textarea> 

muss ich genau, dass diese Textbox ich gesetzt bin versucht, innerhalb eines InsertItemTemplate eines Listview gelegen, und es ist nicht so leicht zu initialisieren. Aus diesem Grund habe ich meinen Initialisierungscode eingefügt, den Sie im Load-Ereignishandler meiner Textbox sehen. Ich kann Ihnen eines sagen: Wenn sich dieser Code auf ein Textfeld bezieht, das sich frei auf der Seite befindet, und ich diesen Code aus dem Load-Event-Handler der Seite aufgerufen habe, würde das gut funktionieren. Aber ich weiß nicht, wie ich in diesem speziellen Fall vorgehen soll.

Ich erwäge auch die Möglichkeit, eine WebCntrol zu erstellen, um ein solches Problem zu behandeln. Ich weiß nicht wirklich, was in diesem Fall die beste Vorgehensweise ist.

+0

Nun, es wird eindeutig HTML-codiert. Was ist "stringparameterforjscript" und wie wird das HTML gerendert? –

+0

Wie stellen Sie das 'onfocus' Attribut des' textarea' ein? Ich würde vermuten, dass die Kodierung durch das 'textarea'-Steuerelement passiert, anstatt Ihre' mycontrol.stringparameterforjscript' ... – bdukes

+0

@bdukes Ich denke nicht, dass ich durch eine ASP.NET-Steuerelement-Bibliothek-Eigenschaft, denke ich Das Problem ist genau dort. Es muss eine Escape-Sequenz geben, irgendwo zu setzen, es ist nur, dass ich es nicht weiß ... :( – Andry

Antwort

1

Ich denke, man könnte das @ auf beiden Stringliterale in Ihre Zuordnung benötigen, und entfernen Sie die Hiebe:

mycontrol.stringparameterforjscript = @"document.getElementById('" + myotherparam + @"').value = 'Hello'"; 

EDIT

Wie ich es tat:

Am. aspx:

<asp:Textbox ID="tbTest" runat="server" TextMode="MultiLine" /> 

Im Code:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string myotherparam = "paramval"; 
    tbTest.Attributes.Add("onfocus", @"document.getElementById('" + myotherparam + @"').value = 'Hello'"); 
} 

Resultierende Ausgang:

<textarea name="tbTest" rows="2" cols="20" id="tbTest" onfocus="document.getElementById('paramval').value = 'Hello'"></textarea> 
+0

Es funktioniert nicht, es druckt auch \ in der endgültigen Ausgabe ... Aber Ist das wirklich so ein ernstes Problem das ich es nicht glauben kann – Andry

+0

Sorry mein Schlechter, die Schrägstriche sollten auch von den Strings entfernt werden Siehe meine bearbeitete Antwort Ich habe das gerade selbst getestet und es scheint zu funktionieren. – Ender

+0

Ich werde testen ... hoffe, es ist richtig :) – Andry

Verwandte Themen