下拉列表出错

时间:2012-09-04 12:05:12

标签: asp.net-mvc vb.net razor

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

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

但是我收到了错误:

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

如果在返回“无付款”时未选择任何内容,如何实现此目的。

1 个答案:

答案 0 :(得分: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")

当选择“None Selected”时,您将获得Model.Type的空值。

如果您想完全管理默认值和文字,则必须将其直接添加到SelectListItem(因此在ViewBag.Type中)。

并使用

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

但不确定它是否有用。使用其他解决方案,您可以检查是否已选择“None Selected”(我做c#,原谅语法错误)

If Model.Type is Nothing Then