在我的MVC3应用程序中,我有一个下拉列表。在那里我必须显示所有结果,但必须禁用某些结果,以便它们不可选择。我怎么能这样做?
这就是我现在所拥有的。它只是没有显示已禁用设置为 true 的玩家。
@Html.DropDownListFor(m => m.Position1, Model.SelectedTeam.TeamPlayers
.Where(c => c.Player.Disabled == false)
.OrderBy(t => t.Player.Lastname)
.ToSelectList(m => m.FullName, m => m.PlayerId))
那么还有另一种方法可以显示已禁用的玩家,但是输出会是这样的,而不是完全隐藏它们:
<select>
<option>Player 1</option>
<option disabled="disabled">Player 2</option>
<option>Player 3</option>
<option>Player 4</option>
<option disabled="disabled">Player 5</option>
<option>Player 6</option>
</select>
使用DropDownListFor可以实现吗?
答案 0 :(得分:2)
好的,这是做这件事的'艰难之路'。 :)也许别人会有更好的主意。
首先,您需要区分选择列表中的有效和禁用条目 - 只有这样才能通过value
的{{1}}或text
。假设无效值将包含option
,否则它是有效的ID:
value == "disabled"
然后在视图中
//Somewhere in the controller
...
var list = yourViewModel.SelectedTeam.TeamPlayers.OrderBy(p => p.LastName).Select(new SelectListItem
{
Text = item.LastName,
Value = item.Disabled ? "disabled" : item.PlayerId.ToString()
}).ToList();
//pass it however you want, in the model or by ViewBag
ViewBag.MyDropDownList = new SelectList(list, "Value", "Text");
@Html.DropDownListFor(model => model.Position1, ViewBag.MyDropDownList as SelectList);