J'essaie de restituer une liste HTML semblable au suivant, à l'aide du moteur de vue Razor:
<ul>
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
</ul>
Le code que je tente d'utiliser pour rendre cette liste est le suivant:
<ul>
@foreach (var item in Model.TheItems)
{
<li id="[email protected]">Item @item.TheItemId</li>
}
</ul>
L'analyseur est en train de s'étouffer, car il pense que tout ce qui se trouve à droite du trait de soulignement de l'attribut id est en texte brut et ne doit pas être analysé. Je ne suis pas sûr de savoir comment demander à l'analyseur de rendre TheItemId.
Je ne veux pas, mais une propriété sur l'objet de modèle qui inclut le préfixe item_.
Je dois également conserver cette syntaxe car j'utilise la liste avec JQuery Sortable et avec la fonction de sérialisation qui nécessite que l'attribut id soit formaté dans cette syntaxe.
Vous devriez envelopper la partie interne de l'appel avec ( )
:
<li id="item_@(item.TheItemId)">
Que diriez-vous d'utiliser String.Format ? comme ça:
<li id="@String.Format("item_{0}", item.TheItemId)">
Je préfère:
<li id="@String.Concat("item_", item.TheItemId)">
La verbosité indique aux développeurs de support exactement ce qui se passe, elle est donc claire et facile à comprendre.
Vous pouvez même utiliser cette méthode pour concaténer plus de chaînes :
<li id="@("item-"+item.Order + "item_"+item.ShopID)" class="ui-state-default"></li>
Ici est un autre post.
Hope aide quelqu'un.