asp.net
2009-07-10 5 views 6 likes 
6

Ich habe eine Eingabesteuerung auf einer Seite wie folgt aus:Warum werden <%=%> Tags als " <% =%> " gerendert?

<input 
    type="button" 
    causesvalidation="false" 
    runat="server" 
    id="resetButton" 
    value="Iptal" 
    onclick='return 
    resetForm("<%=projectValidationSummary.ClientID%>");' /> 

wenn es

<input 
    name="ctl00$ContentPlaceHolder1$EditForm$resetButton" 
    type="button" 
    id="ctl00_ContentPlaceHolder1_EditForm_resetButton" 
    value="Iptal" 
    onclick="return resetForm(&quot;&lt;%=projectValidationSummary.ClientID%>&quot;);" /> 
gemacht wird

I <%=%>-Tags auf Seite verwenden, aber es als

&quot;&lt;%=%>&quot; 

Can gemacht wird jemand sagt mir, warum das passiert?

+0

Sind Ihr Eingang eines oder ein Kontrolle ? – Kane

+1

Ich denke, die Frage könnte je nach dem, was Sie versuchen, unterschiedliche Antworten haben. Ist das ein JavaScript, JSP oder ASP? –

+0

es ist asp.net Seite und dankyy1

Antwort

4

<% =%> ist nur innerhalb von literalem HTML verwendbar und kann nicht auf einem Serversteuerungsattribut verwendet werden.

Stattdessen sollten Sie uns Datenbindung <% #%>, und in Ihrem Fall ich denke, dass Sie versuchen, eine Javascript-Funktion auf Ihrem Client-Seite auszulösen und dann sollten Sie den Code wie folgt aussehen:

<asp:button 
causesvalidation="false" 
runat="server" 
id="resetButton" 
text="Iptal" 
onclientclick='<%# String.Format("return resetForm(\"{0}\");", projectValidationSummary.ClientID) %>' /> 

und auf der Serverseite sollten Sie das Attribut mit diesem Code (wahrscheinlich im Page.Load Ereignisse) binden:

if(!this.IsPostBack) 
{ 
    this.resetButton.DataBind(); 
} 
+0

thnx für unsere hilft ich machte js Funktion "resetForm" nicht Parameter und ich bekam item's clientId innerhalb JavaScript-Funktion in diesem Fall ... – dankyy1

1

Da in resetForm eine HTML-Codierung für die Zeichenfolge stattfindet.

0

Dies ist offensichtlich, aber haben Sie sichergestellt, dass der Dateityp geeignet ist? I.e. JSP für eine JSP oder Asp für einen ASP?

Dies sollte vor der Codierung vom Compiler abgefangen werden. Ist es möglich, dass vor dem Kompilieren der Seite eine Vorverarbeitung stattfindet? Ihre ID wurde geändert und ein Namenselement hinzugefügt ...

3

Sie können Renderblöcke nicht mit Text für Werte mischen und abgleichen. Versuchen Sie, diese

onclick='<%= "return resetForm(\"" + projectValidationSummary.ClientID + "\");" %>' 
3

die runat="server" entfernen - Sie brauchen es nicht, wenn Sie eine wörtliche Schreib tun (<%=)

So:

<input 
    type="button" 
    causesvalidation="false" 
    id="resetButton" 
    value="Iptal" 
    onclick="return resetForm('<%= projectValidationSummary.ClientID %>');" /> 

oder ein databind anstelle:

<input 
    type="button" 
    causesvalidation="false" 
    id="resetButton" 
    runat="server" 
    value="Iptal" 
    onclientclick="return resetForm('<%# projectValidationSummary.ClientID %>');" /> 

//in code behind: 
resetButton.DataBind(); 

. Net mag nicht literal schreibt innerhalb des Servers gerendert Kontrollen anders als Paneele.

+1

In der zweiten Code-Bereich der onlick ist ein Server-Ereignis und 'Return resetForm ...' ist da für keine gültige Zuordnung. – bang

+0

Gut entdeckt - ich habe es in onclientclick geändert – Keith

3

Da Sie bereits runat = "server" verwenden, sollten Sie diese Eigenschaft sowieso im Code-Behind einstellen.

resetButton.attributes.add ("onclick", ".....");

Verwandte Themen