J'essaie de rendre une liste HTML qui ressemble à ce qui suit, en utilisant le moteur de vue Razor:
<ul>
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
</ul>
Le code que j'essaie d'utiliser pour rendre cette liste est:
<ul>
@foreach (var item in Model.TheItems)
{
<li id="[email protected]">Item @item.TheItemId</li>
}
</ul>
L'analyseur est en train d'étouffer, car il pense que tout ce qui se trouve à droite du trait de soulignement dans l'attribut id est du texte brut et ne doit pas être analysé. Je ne sais pas comment demander à l'analyseur de rendre TheItemId.
Je ne veux pas mais une propriété sur l'objet 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.
asp.net-mvc
asp.net-mvc-3
razor
asp.net-mvc-4
David Marchelya
la source
la source
@
quelle , y compris le et les parenthèses) ... Ce qui a finalement fonctionné pour moi était le très ingratid="foo" + Model.Bar
.Que diriez-vous d'utiliser String.Format ? comme ça:
<li id="@String.Format("item_{0}", item.TheItemId)">
la source
id="@String.Format('foo{0}', item.Bar)"
?Je préfère:
La verbosité indique aux développeurs de support exactement ce qui se passe, donc c'est clair et facile à comprendre.
la source
Vous pouvez même utiliser cette méthode pour concater plus de chaînes :
Voici un autre article.
L'espoir aide quelqu'un.
la source
Vous pouvez ainsi procéder de manière plus simple:
la source
Cet article semble être plus ancien, mais cela fonctionne maintenant dans le dernier MVC:
la source