我有一个数据库,其中包含一个带“1”或“0”的tinyint列,用于标记为“是”或“否”。
在我的剃刀视图中,我想在ListBox中显示它。从数据库中读取行时,我想预先选择ListBox中的相应项。
此处的代码已简化:
var mItems = new List<SelectListItem>{
new SelectListItem { Value="1", Text="Yes"},
new SelectListItem { Value="0", Text="No"}
};
int mIsProofed = 0;
// This doesn´t preselect my item:
mItems.Select(x => x.Value == mIsProofed.ToString());
:
@Html.ListBox("mylistbox", mItems)
有任何想法如何解决这个问题?
答案 0 :(得分:2)
您需要在SelectListItem
上设置Selected
属性。
我将您的代码更新为与此类似:
var selectedItem = mItems.FirstOrDefault(x => x.Value == mIsProofed.ToString());
if(selectedItem != null)
{
selectedItem.Selected = true;
}
这将找到您要选择的项目,如果找到则更新其选定的属性,否则不会修改任何内容。
您正在使用的.Select()
method用于在列表上执行投影,换句话说,它更像是SQL中的select
命令,您可以在其中指定子集(或完整集)数据。
答案 1 :(得分:0)
尝试将Selected
属性设置为true:
var selected = mItems.Where(x => x.Value == mIsProofed.ToString()).First();
selected.Selected = true;
.
.
@Html.ListBox("mylistbox", mItems)