ASP.NET MVC Razor concatenación
-
11-10-2019 - |
Pregunta
Estoy intentando el render una lista HTML que se parece a la siguiente, utilizando la vista del motor de la maquinilla de afeitar:
<ul>
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
</ul>
El código que estoy tratando de utilizar para hacer que esta lista es:
<ul>
@foreach (var item in Model.TheItems)
{
<li id="item_@item.TheItemId">Item @item.TheItemId</li>
}
</ul>
El analizador está asfixiando, ya que piensa que todo lo que a la derecha del guión en el atributo id es texto plano y no debe ser analizado. Estoy seguro de cómo dar instrucciones al analizador para hacer TheItemId.
Yo no quiero sino una propiedad del objeto modelo que incluye el prefijo item_.
También tiene que mantener esta sintaxis que estoy usando la lista con jQuery Sortable y con la función serialize que requiere el atributo id para ser formateado en esta sintaxis.
Solución
Se debe envolver la parte interna de la llamada con ( )
:
<li id="item_@(item.TheItemId)">
Otros consejos
¿Y si uso cadena. formatear ? de esta manera:
<li id="@String.Format("item_{0}", item.TheItemId)">
Yo prefiero:
<li id="@String.Concat("item_", item.TheItemId)">
El nivel de detalle dice a los desarrolladores de apoyo exactamente lo que está sucediendo, por lo que es claro y fácil de entender.
Incluso puede utilizar esta forma de concat más cadenas
<li id="@("item-"+item.Order + "item_"+item.ShopID)" class="ui-state-default"></li>
Aquí es otro post.
La esperanza ayuda a alguien.