Прежде всего я не разработчик MVC. Я просто пытаюсь помочь нескольким ребятам из MVC в их проекте из-за различных ограничений, которые у них есть, поэтому, если это это n00b вещь, пожалуйста, не стреляйте :)ASP.NET MVC - Как выполнить условный код C# в javascript
Вот вещь - есть основа, которая используется в этой команде, которая имеет функцию визуализации, как так:
ObjMP.render ({
// various configuration options
labels: [
{ settings: '@Html.Raw(lablesPosition[0])', content: '@Html.Raw(lablesContent[0])' },
{ settings: '@Html.Raw(lablesPosition[1])', content: '@Html.Raw(lablesContent[1])' }
]
опция конфигурации, меня беспокоит опция «ярлыков», показанная выше. «lablesContent» и «lablesPosition» на самом деле являются IList в моем файле .cshtml.
Приведенный выше код использует настройки, хранящиеся в коллекции, по индексу 0 и 1, как вы можете видеть. На самом деле это жестко закодированная вещь.
Я не гарантирую, что в коллекции будет всего 2 предмета.
Чтобы преодолеть это, я могу сделать что-либо:
1> Написать цикл Еогеасп как-то, где вместо того, чтобы использовать lablesPosition [0] и т.д. Я могу сделать что-то вроде lablesPosition [я]
2> Я знаю, число записей в коллекции для каждого сценария и поэтому на основе выбора сценария я пишу 5 настроек или 4 параметров с использованием, если - еще блока, как так:
if(selectiong=="a")
{
labels: [
{ settings: '@Html.Raw(lablesPosition[0])', content: '@Html.Raw(lablesContent[0])' },
{ settings: '@Html.Raw(lablesPosition[1])', content: '@Html.Raw(lablesContent[1])' }
]
}
else if(Select=="b")
{
labels: [
{ settings: '@Html.Raw(lablesPosition[0])', content: '@Html.Raw(lablesContent[0])' },
{ settings: '@Html.Raw(lablesPosition[1])', content: '@Html.Raw(lablesContent[1])' },
{ settings: '@Html.Raw(lablesPosition[2])', content: '@Html.Raw(lablesContent[2])' }
]
}
проблемы во втором подходе, что, когда страница двигатель RAZOR, похоже, оценивать все выражение с помощью «@» во время выполнения, независимо от валидации состояния if-else в JS, и, следовательно, код ломается для меня - в основном он может попытаться получить доступ к значению в коллекции в позиции 6, когда коллекция имеет только 2 элемента ,
Как я могу решить эту проблему? (ASP.NET MVC 3)
Используйте цикл 'foreach' /' for', чтобы вручную индексировать элементы. – Candide
Я немного смущен, вы хотите реализовать определенную процедуру java-скрипта на C#. Вы хотите изменить функцию JavaScript на основе того, что доступно в коде C#? Реальный вопрос: что вы хотите совершить с дополнительным JS? –