web-dev-qa-db-fra.com

asp.net mvc razor foreach loop ajoutant un identifiant à div

J'essaie d'ajouter id dynamique à div dans une boucle foreach concaténée avec la valeur de la variable i. Il jette des erreurs de syntaxe. Quel pourrait être le problème. Peut-on atteindre cette solution sans utiliser une boucle for?

@{int i=1;}
@foreach (var or in Model.Names)
{           
       <div oid="@or.Id" mode="0" oids="@or.Id" id="tr"+i>
       @or.Name
       </div>
i++;
}
18
Kurkula

Vous voulez construire un identifiant dans le segment de code C #. Une option est de faire toute la construction avec le format de chaîne: 

<div oid="@or.Id" mode="0" oids="@or.Id" id="@string.Format("tr{0}",i)">

Ou id="@("tr"+i)" ou id="tr@(i)" 

Notez que vous ne pouvez pas vous contenter de id="tr@i" car l’analyseur de syntaxe Razor ignore "text @ text" car il ressemble à une adresse électronique normale.

45
Alexei Levenkov

dans le nouveau C # 6, vous pouvez directement utiliser id = "@ ($" tr {i} ")"

3
Cătălin Rădoi

Vous ne pouvez pas ajouter comme ceci:

id="tr"+i>

Ce doit être:

id="tr@i">

Vous avez besoin du @ .. car il ne sera pas possible de déduire entre le balisage et Razor à ce stade.

3
Simon Whitehead

pour moi, aucune de ces solutions ne fonctionnait, mais en ajoutant mon @ i, je travaillais d'abord, id="@i+AnyText" après l'avoir construite et inspectée, obtenez id="1+AnyText" pour le suivant. id="2+AnyText" et ainsi de suite (avec 2013vs). 

j'espère que cela aidera n'importe qui, passez une belle journée.

0
misterzik