w00*_*w00 6 c# razor asp.net-mvc-3
在我的MVC3应用程序中,我有一个下拉列表.在那里我必须显示所有结果,但必须禁用某些结果,以便它们不可选择.我怎样才能做到这一点?
这就是我现在所拥有的.它只是没有显示已将Disabled设置为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))
Run Code Online (Sandbox Code Playgroud)
那么还有另一种方法来显示已禁用的播放器,但输出将是这样的,而不是完全隐藏它们:
<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>
Run Code Online (Sandbox Code Playgroud)
DropDownListFor可以实现吗?
好的,这是执行此操作的“困难方法”。:) 也许其他人会有更好的主意。
首先,您需要区分选择列表中的有效条目和禁用条目 - 唯一的方法是通过value或text. option假设无效值带有value == "disabled",否则它是有效 ID:
//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");
Run Code Online (Sandbox Code Playgroud)
然后在视图中
@Html.DropDownListFor(model => model.Position1, ViewBag.MyDropDownList as SelectList);
Run Code Online (Sandbox Code Playgroud)
//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");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |