我正在尝试根据Stack Overflow上的另一篇文章为我的DropDown列表定义默认值:
@Html.DropDownList(Function(model) model.Type, DirectCast(ViewBag.Type, IEnumerable(Of SelectListItem)), "None Selected", "No Payment")
但是我收到了错误:
“Lambda表达式无法转换为'String',因为'String'不是委托类型。”
如果在返回“无付款”时未选择任何内容,如何实现此目的。
答案 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