0

这可能吗?我的 cshtml(剃刀)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 条件。我怎样才能实现它?我有一个布尔方法来检查可以从控制器调用的条件,但是在谷歌搜索很多之后我不知道如何“标记”这些。

4

2 回答 2

3

我无法想到如何使用选择项列表和 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 变量,并根据需要为它提供不同的类或样式

于 2013-10-16T17:39:25.617 回答
1

从此处组合代码使用 jquery 从下拉列表中删除特定项目,并在此处更改下拉列表 JQuery 的背景颜色

看看这是否适合你

var $list = $("#myList"),
toColor= $();

for(var i = selectedItems.length; i--;) {
   toColor= toColor.add($list.find('option[value="' + selectedItems[i] + '"]'));
}
toColor.css(TextHighlightCss);
于 2013-10-16T17:30:00.463 回答