在Razor ListBox中预选项目

时间:2014-05-27 13:59:32

标签: c# asp.net-mvc razor listbox

我有一个数据库,其中包含一个带“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)

有任何想法如何解决这个问题?

2 个答案:

答案 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)