Id Value IsActive
1 A true
2 B false
3 C true
В настоящее время я работаю над выпадающим списком в MVC, и я хочу отобразить свои варианты с другим цветом шрифта на основе флага IsActive
, пример true
будет отображаться зеленым цветом, false
будет отображаться красным ,
ViewBag.listScore = new List<SelectListItem>();
ViewBag.listScore.AddRange(list.Select(l=> new SelectListItem() {
Text = l.Value + (l.IsActive ? "" : "(Deactivated)"),
Value = l.Id.ToString()
}));
@Html.DropDownList("score", new SelectList(listScore, "value", "text", 0));
В данный момент я вставляю индикатор во временное Text
, после чего я меняю цвет и удаляю индикатор из Text
, используя jquery
, как показано ниже
$("#score option").each(function () {
if ($(this).text().indexOf('(Deactivated)') != -1) {
$(this).css("color", "red");
$(this).text($(this).text().replace('(Deactivated)', ''));
}
})
Этот метод будет делать то, что я ожидал, но я предпочитаю не использовать jquery
для циклического прохождения каждой опции из списка, а также не вводить временный индикатор, просто чтобы указать, что это за опция.
Есть ли какое-либо улучшение или другой способ сделать это?
Любой совет по этому поводу будет оценен. Спасибо.