Próbuję wyrenderować listę HTML, która wygląda jak poniżej, przy użyciu silnika widoku Razor:
<ul>
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
</ul>
Kod, którego próbuję użyć do renderowania tej listy, to:
<ul>
@foreach (var item in Model.TheItems)
{
<li id="[email protected]">Item @item.TheItemId</li>
}
</ul>
Parser się dławi, ponieważ uważa, że wszystko na prawo od podkreślenia w atrybucie id jest zwykłym tekstem i nie powinno być analizowane. Nie jestem pewien, jak poinstruować parser, aby renderował TheItemId.
Nie chcę, ale właściwość obiektu modelu, która zawiera prefiks item_.
Muszę również zachować tę składnię, ponieważ używam listy z JQuery Sortable i funkcją serializacji, która wymaga sformatowania atrybutu id w tej składni.
asp.net-mvc
asp.net-mvc-3
razor
asp.net-mvc-4
David Marchelya
źródło
źródło
@
z nawiasami i nawiasami) ... To, co w końcu zadziałało, było bardzo niezręczneid="foo" + Model.Bar
.A co z użyciem String.Format ? lubię to:
<li id="@String.Format("item_{0}", item.TheItemId)">
źródło
id="@String.Format('foo{0}', item.Bar)"
?Wolę:
<li id="@String.Concat("item_", item.TheItemId)">
Szczegółowość mówi programistom pomocy technicznej dokładnie, co się dzieje, dzięki czemu jest jasne i łatwe do zrozumienia.
źródło
Możesz nawet użyć tego sposobu, aby połączyć więcej ciągów :
<li id="@("item-"+item.Order + "item_"+item.ShopID)" class="ui-state-default"></li>
Oto kolejny post.
Nadzieja pomaga komuś.
źródło
Możesz to zrobić w prostszy sposób:
id="[email protected]"
źródło
Ten post wydaje się być starszy, ale teraz działa to teraz w najnowszym MVC:
id="[email protected]"
źródło