我正在尝试创建一个多选列表并指定下拉列表的默认值,但我提供的默认值将被忽略。
我的控制器看起来像这样:
var ProvisionFromDb = (from Provision in db.Provisions
orderby Provision.Provision1 ascending
select new SelectListItem
{
//select all items
Selected = true,
Text = Provision.AltDescription,
Value = Provision.Provision1.ToString()
}).ToList();
ViewBag.ProvisionDropdown = new MultiSelectList(ProvisionFromDb, "Value", "Text");
在我看来,我有以下声明:
@Html.ListBox("ProvisionId", (MultiSelectList)ViewBag.ProvisionDropdown)
一切正常,但默认值未被选中。我假设这是因为MultiSelectList无法识别SelectList对象中的selected属性。 解决这个问题最简单的方法是什么?
其他信息:在剃刀视图声明中," ProvisionId"表示正在创建的选择下拉列表的名称/ ID。
答案 0 :(得分:2)
这里的解决方案是将默认值放入重载的MultiSelectList构造函数中,其中第4个参数是表示默认选定项的值的数组。
就我而言,我不需要定义模型。以下工作:
ViewBag.ProvisionDropdown = new MultiSelectList(ProvisionFromDb, "Value", "Text", new[] {"Selected Value1","Selected Value2"});
linq查询也可以用于根据" Selected"生成此数组。 SelectListItem的属性。
答案 1 :(得分:1)
呈现为选中的选项取决于您绑定的值。这里,即" ProvisionId"。如果这是您模型上的属性,则应使用ListBoxFor
代替,然后将其设置为您要选择的Provision1
值列表。如果它不是您模型上的属性,则可以使用该列表设置ViewBag.ProvisionId
之类的内容。