0

我正在尝试根据 Stack Overflow 上的另一篇文章为我的 DropDown 列表定义一个默认值:

@Html.DropDownList(Function(model) model.Type, DirectCast(ViewBag.Type, IEnumerable(Of SelectListItem)), "None Selected", "No Payment")

但我得到一个错误:

“Lambda 表达式无法转换为 'String',因为 'String' 不是委托类型。”

我如何实现这一点,所以如果没有选择返回“无付款”。

4

1 回答 1

0

嗯,首先,我认为你必须选择DropDownListFor,而不是DropDownList,如果你的第一个论点是Expression(Of Func(Of TModel, TProperty))

在这两种情况下,都没有DropDownList/For最后采用 2 个字符串的重载,一个用于默认文本,另一个用于默认值。

如果你这样做

@Html.DropDownList(Function(model) model.Type, DirectCast(ViewBag.Type, IEnumerable(Of SelectListItem)), "None Selected")

当“无选选中”是ChoOp选项时,您将获得型号的空值。

如果您想完全管理默认值和文本,则必须将其直接添加到您的SelectListItem(so in ViewBag.Type).

并使用

@Html.DropDownList(Function(model) model.Type, DirectCast(ViewBag.Type, IEnumerable(Of SelectListItem)))

但不确定它是否有用。使用其他解决方案,您可以检查是否已通过类似的方式选择“未选择”(我使用 c#,请原谅语法错误)

If Model.Type is Nothing Then 
于 2012-09-04T12:19:31.547 回答