#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>