2009-08-05 21 views
1

Ich versuche, eine Aspx-Seite zu schreiben, wo ich einige Server-Seite Wert an das Javascript übergeben. Der Server-Seite-Tag Wechsel von <% zu &lt;%Warum <als < während Laufzeit konvertiert wird

<asp:TextBox 
    ID="txtOriginalNo" 
    runat="server" 
    onkeyup="javascript:EnterKeyPress(<%=ibtnSubmit.ClientID%>,event);" 
    TabIndex="1" 
    MaxLength="13" 
></asp:TextBox> 

wird dies während der Laufzeit umgewandelt zu werden:

<input 
    name="txtOriginalNo" 
    type="text" 
    maxlength="13" 
    id="txtOriginalNo" 
    tabindex="1" 
    onkeyup="javascript:EnterKeyPress(&lt;%=ibtnSubmit.ClientID%>,event);" 
/> 

Kann mir jemand sagen, warum das so ist?

Antwort

2

Sie können nicht verwenden, um einen Server-Tag innerhalb einer Server-Kontrolle. Legen Sie die Eigenschaft von Code hinter:

txtOriginalNo.Attributes["onkeyup"] = "EnterKeyPress(" + ibtnSubmit.ClientID + ",event);" 

Hinweis: Schließen Sie das javascript: Protokoll in Ereignisattribute nicht verwenden. Es wird verwendet, wenn Sie Javascript-Code in eine URL einfügen. Wenn Sie es in einem Ereignisattribut verwenden, wird es stattdessen zu einem Label.

+0

Danke Guffa .. Mir den Kopf vom Morgen brechen. es funktioniert perfekt :) –

0

Sie können <%= %> dort nicht innerhalb eines Attributs eines serverseitigen Steuerelements verwenden. Sie müssen die asp:TextBox ‚s onkeyup Eigenschaft unterschiedlich, so etwas wie zuweisen:

<% myTextBox.OnKeyUp = "javascript:EnterKeyPress(ibtnSubmit.ClientID)"; %> 
+0

Wo soll ich diese keyUp hinzufügen? sollte es in Markup oder im Code dahinter sein? –

0

Es wird konvertiert, um Sie vor XSS (Cross-Site Scripting) Sicherheitslücken zu schützen. Es ist eine gute Sache. Die meisten Arten von Servertags können nicht in Attributen von Servertags in ASP.NET enthalten sein.

jedoch Sie Bindung verwenden können, finden Sie diese Frage 528006 (Server tag in OnClientClick) für weitere Informationen:

<asp:TextBox onkeyup="<%# CreateKeypressEvent(Eval(ibtnSubmit.ClientID)) %>"> 
</asp:TextBox> 

protected static CreateKeyPressEvent(string source) 
{ 
    return "javascript:EnterKeyPress('" + source + "', event);"; 
} 
Verwandte Themen