Конкатенация бритвы ASP.NET MVC

Я пытаюсь отобразить список HTML, который выглядит следующим образом, используя механизм просмотра Razor:

<ul>
  <li id="item_1">Item 1</li>
  <li id="item_2">Item 2</li>
</ul>

Код, который я пытаюсь использовать для отображения этого списка, следующий:

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

Парсер задыхается, потому что он считает, что все справа от подчеркивания в атрибуте id является простым текстом и не должно анализироваться. Я не уверен, как заставить анализатор отображать TheItemId.

Я не хочу, но свойство объекта модели, которое включает префикс item_.

Мне также нужно сохранить этот синтаксис, поскольку я использую список с JQuery Sortable и с функцией сериализации, которая требует, чтобы атрибут id был отформатирован в этом синтаксисе.

Ответ 1

Вы должны обернуть внутреннюю часть вызова с помощью ( ):

<li id="[email protected](item.TheItemId)">

Ответ 2

Как насчет использования String.Format? например:

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

Ответ 3

Я предпочитаю:

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

Многословие говорит разработчикам поддержки о том, что происходит, поэтому оно понятное и понятное.

Ответ 4

Вы даже можете использовать этот способ для concat more strings:

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

Здесь - это еще одно сообщение.

Надежда помогает кому-то.