La Syntaxe Razor et Javascript
Comme un test, je suis la conversion d'une preuve-de-concept de l'app, nous avons écrit à partir des Formulaires Web de Rasoir, simplement pour que nous puissions l'évaluer.
J'ai couru dans un problème de la mesure qui fait mal à la tête..génératrices de Javascript côté client...
Formulaires Web
<script type="text/javascript">
var jqGridIdList = "<%: Url.Action ("getidlist", "office", new { area = "reports" }) %>";
var availableIds = [];
<% for (var i = 0; i < Model.Data.Count (); i++) { %>
availableIds.push({ value : "<%: Model.Data.ElementAt (i).Text %>", label : "<%: Model.Data.ElementAt (i).Text %>" });
<% } %>
</script>
La Syntaxe Razor
<script type="text/javascript">
var jqGridIdList = "@Url.Action("getidlist", "office", new { area = "reports" })";
var availableIds = [];
@for(var i = 0; i < Model.Data.Count (); i++) {
availableIds.push({ value : "@Model.Data.ElementAt(i).Text", label : "@Model.Data.ElementAt(i).Text" });
}
</script>
Le compilateur me donne le message d'erreur suivant sur la " availableIds.push' ligne:
Compilateur Message d'Erreur: CS1525: Invalid expression du terme '{'
C'est bien évidemment essayer de le compiler en C#...mais comment puis-je l'arrêter?
Merci,
Kieron
Vous devez vous connecter pour publier un commentaire.
Vous devez envelopper dans le pseudo-élément
<text>
. La commutation de l'analyseur de retour à la mode html et il sera alors analyser le javascript dans le cadre de l'html et pas en c#. La raison pour laquelle il arrive est la@for()
c# bloc et rien traitées à l'intérieur est également considéré comme c# jusqu'à ce qu'il se sauve par une balise html. Puisque vous ne voulez probablement pas une balise html rasoir fournit la<text>
balise pour basculer entre les modes.Si vous remarquez la différence dans votre asp.net webforms à la fin de l'
<% for
ligne avec un%>
qui prend de c# en mode. Si vous téléchargez le rasoir surligneur extension pour visual studio 2010, il vous aidera à voir si le code est traité comme un code et le code html est traité comme du html.Mise à jour pour la dernière version
Vous pouvez maintenant utiliser le
@:
syntaxe pour encore plus de lisibilité<text>
? Dans le cas de Js/Html/serveur code.<text>
n'indique que le rasoir de l'analyseur, ce qui devrait être sortie vers le navigateur. Sinon, l'analyseur suppose qu'il code. car il n'est pas un élément html.