Ответ 1
Вы должны обернуть внутреннюю часть вызова с помощью ( )
:
<li id="[email protected](item.TheItemId)">
Я пытаюсь отобразить список 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 был отформатирован в этом синтаксисе.
Вы должны обернуть внутреннюю часть вызова с помощью ( )
:
<li id="[email protected](item.TheItemId)">
Как насчет использования String.Format? например:
<li id="@String.Format("item_{0}", item.TheItemId)">
Я предпочитаю:
<li id="@String.Concat("item_", item.TheItemId)">
Многословие говорит разработчикам поддержки о том, что происходит, поэтому оно понятное и понятное.
Вы даже можете использовать этот способ для concat more strings:
<li id="@("item-"+item.Order + "item_"+item.ShopID)" class="ui-state-default"></li>
Здесь - это еще одно сообщение.
Надежда помогает кому-то.