ASP.NET MVC RAZOR Concatenation
-
11-10-2019 - |
Вопрос
Я пробую рендеринг списка HTML, который выглядит следующим образом, используя двигатель View 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="item_@item.TheItemId">Item @item.TheItemId</li>
}
</ul>
Сигсерчик задыхается, потому что он думает, что все справа от подчеркивания в атрибуте ID является простым текстом и не должно быть проанализировано. Я не уверен в том, как инструктировать анализатор, чтобы сделать театемид.
Я не хочу, но свойства на объекте модели, который включает в себя префикс item_.
Я также должен сохранить этот синтаксис, так как я использую список с сортировкой jQuery и с функцией Serialize, которая требует отформатирования атрибута ID в этом синтаксисе.
Решение
Вы должны обернуть внутреннюю часть звонка ( )
:
<li id="item_@(item.TheItemId)">
Другие советы
Как насчет использования String.format? как это:
<li id="@String.Format("item_{0}", item.TheItemId)">
Я предпочитаю:
<li id="@String.Concat("item_", item.TheItemId)">
Мервесность сообщает разработчикам поддержки именно то, что происходит, так что это ясно и легко понять.
Вы даже можете использовать таким образом, чтобы Concat больше струн:
<li id="@("item-"+item.Order + "item_"+item.ShopID)" class="ui-state-default"></li>
Здесь это еще один пост.
Надежда поможет кому -то.