Как я могу добавить динамический список классов CSS в div, используя 2sxc и шаблон c # razor?

#razor #dotnetnuke #2sxc

#razor #dotnetnuke #2sxc

Вопрос:

В основном это вопрос C # Razor, но я включил подробности, чтобы помочь понять проблему. В принципе, я хочу назначить кучу классов CSS карточкам в списке в приложении 2sxc.

Используя приложение 2sxc, у меня есть список «Карьеры», которые отображают заголовок и картинку. У меня также есть боковая панель с кнопками фильтрации, чтобы пользователи могли фильтровать результаты. Например, они будут фильтровать по «категории школы» или «провинции».

Я использую шаблон c # razor для вывода этого списка профессий. Я также использую javascript под названием MixItUp для сортировки и фильтрации списка. MixItUp ожидает, что я назначу классы CSS в HTML каждой карточке карьеры, чтобы он знал, что фильтровать. В моем приложении 2sxc у меня есть тип контента под названием «Карьера», а затем другой тип контента под названием «Категория школы». В типе содержимого карьеры у меня есть поле сущности для категории школы, поэтому я могу назначить несколько категорий школ для каждой карьеры.

Проблема, с которой я сталкиваюсь, заключается в моем шаблоне C # razor: в моем цикле списка карточек карьеры я создал еще один цикл для получения категорий школ. Это выглядит так:

 if (career.Categories.Count > 0) {
   foreach(var schoolCategory in AsList(career.Categories as object)){
            @Html.Raw(".filter-"   schoolCategory.SchoolCategory.ToLower().Replace(" ","-")   " ")
    }
  

}

Но я не знаю, как я могу использовать результаты этого кода и добавить его в раздел «Карточка карьеры»? Я пробовал разные вещи, такие как создание переменной для каждой части, но, похоже, я не могу использовать эту переменную вне цикла для использования во внешнем шаблоне.

Как я мог бы назначить эти классы в этом случае?

Ответ №1:

Кстати: вы также должны быть в состоянии сделать то же самое, используя Linq и string.join — ca. вот так

@{ var schoolFilter = строка.Join(» «, asList(продолжение.Категории как объект).Выберите(c => «filter-» c.SchoolCategory.ToLower().Replace(» «, «-«)); }

Ответ №2:

Мой друг / разработчик помог устранить неполадки, и мы нашли ответ.

 var schoolFilter = "";
if (career.Categories.Count > 0) {
   foreach(var schoolCategory in AsList(career.Categories as object)){
        schoolFilter  = "filter-"   schoolCategory.SchoolCategory.ToLower().Replace(" ","-")   " ";
    }} 
<div class="mix @schoolFilter">card</div>