这可能吗?我在我的cshtml(razor)MVC 4中有以下内容:
@Html.DropDownListFor(v => v.Medico, ((IEnumerable<SelectListItem>)ViewBag.Medicos), new { @class="span4"})
这是在控制器上,我如何生成列表:
List<Medico> list = null;
Medico medico = null;
if (visitador != null){
list = new List<Medico>(visitador.Medicos.OrderBy( m => m.Nombre));
for (int i = 0; i < list.Count(); i++)
{
var item = list[i];
if (i == 0 && medico == null) medico = list[i];
medicosList.Add(new SelectListItem { Text = item.Nombre + " " + item.Apellido, Value = item.Id.ToString()});
我需要在下拉列表中以某种方式标记“Medico”符合X条件。我怎样才能实现它? 我有一个bool方法来检查可以从控制器调用的条件,但在谷歌搜索后我不知道如何“标记”这些。
答案 0 :(得分:3)
无法想到如何使用selectitem列表和Html.DropDownList来做到这一点,但你可以轻松地以不同的方式做到这一点
在您的控制器中而不是现在的控制器中,只需拥有列表,因为这就是您需要的所有内容
List<Medico> list = new List<Medico>(visitador.Medicos.OrderBy( m => m.Nombre));
** Edit **
foreach(var m in list)
{
//check each one against your repository here and have something inside of Medico to tell you the result
}
并且在您的HTML中,您可以自己轻松创建下拉列表(只要名称正确与您的模型中的属性名称相同,即Medico,绑定将起作用)
<select id="Medico" name="Medico">
@foreach(var medico in (List<Medico>)ViewBag.Medicos)
{
if(medico.something = "something")
<option id="@medico.Apellido" value="@medico.Id" style="background-color: blue">@medico.Nombre</option>
else if(medico.something ="something else")
<option id="@medico.Apellido" value="@medico.Id" style="background-color: red">@medico.Nombre</option>
}
</select>
基本上在foreach循环中,您可以根据条件检查每个medico变量,并根据您可以根据需要为其提供不同的类或样式
答案 1 :(得分:1)
结合此处的代码remove specific items from dropdown list using jquery和此处Change the background color of dropdownlist JQuery
看看这是否适合你
var $list = $("#myList"),
toColor= $();
for(var i = selectedItems.length; i--;) {
toColor= toColor.add($list.find('option[value="' + selectedItems[i] + '"]'));
}
toColor.css(TextHighlightCss);