Estou tentando renderizar uma lista HTML que se parece com o seguinte, usando o mecanismo de visualização Razor:
<ul>
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
</ul>
O código que estou tentando usar para renderizar esta lista é:
<ul>
@foreach (var item in Model.TheItems)
{
<li id="[email protected]">Item @item.TheItemId</li>
}
</ul>
O analisador está sufocando, porque ele pensa que tudo à direita do sublinhado no atributo id é texto simples e não deve ser analisado. Não tenho certeza de como instruir o analisador a renderizar TheItemId.
Eu não quero, mas uma propriedade no objeto de modelo que inclui o prefixo item_.
Eu também tenho que manter essa sintaxe, pois estou usando a lista com JQuery Sortable e com a função serializar que requer que o atributo id seja formatado nesta sintaxe.
asp.net-mvc
asp.net-mvc-3
razor
asp.net-mvc-4
David Marchelya
fonte
fonte
@
e os parênteses) ... O que finalmente funcionou para mim foi o muito desagradávelid="foo" + Model.Bar
.Que tal usar String.Format ? como isso:
<li id="@String.Format("item_{0}", item.TheItemId)">
fonte
id="@String.Format('foo{0}', item.Bar)"
?Eu prefiro:
O detalhamento diz aos desenvolvedores de suporte exatamente o que está acontecendo, então é claro e fácil de entender.
fonte
Você pode até usar essa maneira para concatear mais strings :
Aqui está outro post.
A esperança ajuda alguém.
fonte
Você pode fazer isso de uma maneira mais simples:
fonte
Esta postagem parece ser mais antiga, mas agora funciona no MVC mais recente:
fonte