Вы определяете JavaScript
функцию, которая принимает параметр i
, то вы пытаетесь использовать его внутри C# код @Model.Sides.SingleOrDefault(a => a.Name == "А").Surfaces.ElementAt(i))
. Для того чтобы эта последняя часть кода была действительной, i
должен существовать на сервере, а не как параметр для клиентской функции.
Предполагая, что выбор действительно должен иметь место на клиенте, у вас есть несколько основных вариантов:
- Отправить все
Surfaces
по клиенту и использовать i
внутри функции, чтобы выбрать нужный элемент что данные,
- Попросите JavaScript вернуться к серверу, запросив частичный вид, содержащий данные, указав в качестве параметра URL-адрес
i
.
Razor - это код на стороне сервера - его разобрал на сервере до его отправки клиенту. Переменная javascript ('i') даже не существует в этой точке. –
Вы не можете смешивать переменные цикла javascript с синтаксисом бритвы. Бритва в представлении обрабатывается до того, как страница будет отправлена клиенту. Javascript обрабатывается только на стороне клиента (после того, как страница покинула сервер). Вот почему вы получаете плохие символы, когда .NET пытается отобразить представление. – Tommy