Asp.net mvc razor foreach loop добавляет id в div

Я пытаюсь добавить динамический id в div внутри цикла foreach, конкатенированного со значением переменной i. Он выдает синтаксические ошибки. Что может быть проблемой. Можем ли мы достичь этого решения без использования цикла for?

@{int i=1;}
@foreach (var or in Model.Names)
{           
       <div oid="@or.Id" mode="0" oids="@or.Id" id="tr"+i>
       @or.Name
       </div>
i++;
}

Ответ 1

Вы хотите построить ID в сегменте кода С#. Один из вариантов состоит в том, чтобы выполнить целую конструкцию со строковым форматом:

<div oid="@or.Id" mode="0" oids="@or.Id" id="@string.Format("tr{0}",i)">

Или id="@("tr"+i)" или id="[email protected](i)"

Обратите внимание, что вы не можете сделать только id="[email protected]", потому что синтаксический анализатор Razor игнорирует "text @text", поскольку он выглядит как обычный адрес электронной почты.

Ответ 2

Вы не можете добавить следующее:

id="tr"+i>

Это должно быть:

id="[email protected]">

Вам понадобится @.. так как он не сможет вывести между разметкой и Razor в этот момент.

Ответ 3

в новом С# 6 вы можете напрямую использовать id = "@($" tr {i} ")"

Ответ 4

для себя, ни одно из этих решений не сработало, но добавив, что мой @i сначала работал, id="@i+AnyText" после его создания и осмотра больного id="1+AnyText", для следующий id="2+AnyText" и т.д. (im, используя 2013).

Надеюсь, что это поможет любому, у вас будет хороший день.

Ответ 5

Поработав с этим некоторое время, я обнаружил, что id="@("tr"+i)" сделал за меня