Estoy tratando de que el render HTML de una lista parecida a la siguiente, utilizando el motor de vistas Razor:

<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 representar esta lista:

<ul>
@foreach (var item in Model.TheItems)
{            
  <li id="[email protected]">Item @item.TheItemId</li>
}
</ul>

El analizador está ahogando, porque piensa que todo a la derecha de la raya en el atributo id es texto plano y no debe ser analizado. No estoy seguro de cómo indicar el analizador para representar TheItemId.

No quiero sino una propiedad en el objeto del modelo que incluye la item_ prefijo.

También tengo que mantener esta sintaxis como estoy usando la lista con JQuery Ordenable y con la función serialize que requiere el atributo id de formato en esta sintaxis.

4 Comentarios

  1. 189

    Debe envolver la parte interior de la llamada con ( ):

    <li id="[email protected](item.TheItemId)">
    • Empecé con la Cadena.Formato, pero prefiero el de la sintaxis y de la brevedad de su respuesta, estoy marcado como mi preferido respuesta.
    • Acaba de pasar por un par de vistas parciales de un compañero de trabajo y limpiar toda la Cadena.Los formatos con esta pequeña navaja truco. Una mayoría de ganado +1!
    • Estoy utilizando Visual Studio 2013 y ASP.NET MVC 5, y esto no está funcionando (la cadena es el conjunto de como, incluyendo la @ y los paréntesis)… Lo que finalmente se trabajó para mí fue muy desgarbado id="foo" + Model.Bar.
    • Perfecto! Gracias
  2. 25

    Cómo sobre el uso de De la cadena.Formato? como este:

    <li id="@String.Format("item_{0}", item.TheItemId)">

    • De la cadena.Formato hizo el truco, Gracias! Estás sólo falta la {0} después de item_ en su respuesta.
    • Ops.. 🙂 lo Siento combate que, cambiado.
    • Este no es el análisis correctamente, debido a anidada comillas dobles… debe el interior de las cotizaciones de ser solteros-citas y el exterior de comillas dobles, algo así como id="@String.Format('foo{0}', item.Bar)"?
  3. 9

    Prefiero:

    <li id="@String.Concat("item_", item.TheItemId)">

    La verbosidad cuenta con el apoyo de los desarrolladores exactamente lo que está sucediendo, por lo que es claro y fácil de entender.

  4. 2

    Usted puede incluso utilizar este modo para concat más cadenas:

    <li id="@("item-"+item.Order + "item_"+item.ShopID)" class="ui-state-default"></li>

    Aquí es otro post.

    Esperanza de ayuda a alguien.

Dejar respuesta

Please enter your comment!
Please enter your name here