"Erwarteter Ausdruck" mit% = foo% innerhalb von JavaScript in der .aspx-Datei

7

Ich habe Code wie folgt in einer .aspx-Datei:

%Vor%

Es funktioniert gut (x ist eine Zeichenkette, die zur Laufzeit an etwas JavaScript gebunden wird), aber beim Kompilieren erhalte ich eine "Expected expression" Warnung für das & lt;% =

Ich weiß, dass es nicht der schönste Code der Welt ist, aber es gibt verschiedene historische Codebits, die ein wenig JavaScript in die Seite einfügen. Alles vollkommen unschuldig:)

    
Joel Spolsky 14.12.2009, 22:16
quelle

6 Antworten

14

Die Warnung wird ausgelöst, weil sich der Codeblock in einem JavaScript <script> -Block befindet; Der Compiler versucht, den Unterschied zwischen HTML / Steuerelementen und JavaScript zu erkennen.

Obwohl es etwas hässlich ist, sollten Sie die Warnung mit eval('<%= x %>')

beseitigen können

Sie können sich auch einen Artikel ansehen, den ich mit ASP.NET geschrieben habe, um dynamisches JavaScript zu erstellen: Ссылка

    
RickNZ 15.12.2009, 00:58
quelle
2

Wenn Sie vollkommen legal sein wollen, verwenden Sie ein Literal:

%Vor%

und setze Text auf den ganzen <script type="text/javascript" language="javascript">...</script> -Block auf der Serverseite.

    
jball 14.12.2009 22:25
quelle
2

Visual Studio überprüft das HTML-Markup auf der Seite. Streng genommen ist das & lt; ist kein gültiges XHTML. Diese Warnung kann durch eine Einschränkung der Validierung verursacht werden, da Visual Studio das & lt; Zeichen in Javascript als "weniger als"!

Offensichtlich sind diese Inline-Ausdrücke kein gültiger Client-Code. Man kann die HTML-Validierungsoptionen unter Extras | Optionen | Texteditor | HTML ändern. Wohlgemerkt, es ist besser, diese Warnungen einfach zu ignorieren, anstatt sie mit HTML 4.01 zu validieren oder die Validierung vollständig zu deaktivieren.

    
Tom 14.12.2009 22:36
quelle
2

Wenn Sie lediglich JavaScript zu Ihrer Seite hinzufügen, können Sie RegisterClientScriptBlock , um das Skript serverseitig zu erstellen und es dann auf die Seite ausgeben zu lassen.

Auf diese Weise müssen Sie kein serverseitiges Scripting innerhalb Ihrer Seite und den damit verbundenen Overhead haben.

    
CAbbott 14.12.2009 23:05
quelle
2

Ich habe das schon mal gemacht und hatte keine Probleme. Ich benutze jedoch jQuery $ (Dokument) .ready () anstelle von init (). Ich denke nicht, dass das ein Problem sein sollte.

Welcher Datentyp ist x? Wenn es sich um eine Zeichenfolge handelt, versuchen Sie, sie in einfache Anführungszeichen zu schreiben. Wenn es sich um eine Zahl handelt, verwenden Sie die Syntaxanalysefunktion für diesen Datentyp.

%Vor%

Ein weiteres Problem wäre die Zugriffsebene der Eigenschaft. ASP.NET-Webformulare können nicht direkt aus dem Code-Behind auf private Felder zugreifen. Der Zugang muss geschützt oder öffentlich sein.

Eval Javascript-Funktion

    
Jim Schubert 14.12.2009 23:14
quelle
0

Ich fand das Problem, dass ich damit hatte.

Es scheint, ich habe HTML über dem Skript falsch auskommentiert.

%Vor%

Ich bekam die erwartete Ausdruckswarnung auf getJson ()

Korrektes Kommentieren des HTML-Codes wird die Warnung beheben.

 - & gt;     
Omgee Cares 26.04.2013 05:34
quelle

Tags und Links