Estoy intentando renderizar una lista HTML que se parece a la siguiente, usando el motor de vista de Razor:
<ul>
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
</ul>
El código que estoy intentando usar para representar esta lista es:
<ul>
@foreach (var item in Model.TheItems)
{
<li id="[email protected]">Item @item.TheItemId</li>
}
</ul>
El analizador se está ahogando porque cree que todo lo que está a la derecha del guión bajo en el atributo id es texto sin formato y no debe analizarse. No estoy seguro de cómo instruir al analizador para que represente TheItemId.
No quiero, sino una propiedad en el objeto modelo que incluye el prefijo item_.
También tengo que mantener esta sintaxis ya que estoy usando la lista con JQuery Sortable y con la función serializar que requiere que el atributo id se formatee en esta sintaxis.
asp.net-mvc
asp.net-mvc-3
razor
asp.net-mvc-4
David Marchelya
fuente
fuente
@
y los paréntesis) ... Lo que finalmente funcionó para mí fue lo muy desagradableid="foo" + Model.Bar
.¿Qué tal usar String.Format ? Me gusta esto:
<li id="@String.Format("item_{0}", item.TheItemId)">
fuente
id="@String.Format('foo{0}', item.Bar)"
?Yo prefiero:
La verbosidad les dice a los desarrolladores de soporte exactamente lo que está sucediendo, por lo que es claro y fácil de entender.
fuente
Incluso puede usar esta forma para concatizar más cadenas :
Aquí hay otra publicación.
La esperanza ayuda a alguien.
fuente
Puedes hacerlo de una manera más sencilla:
fuente
Esta publicación parece ser más antigua, pero ahora funciona en la última MVC:
fuente