0

Stack Overflow の別の投稿に従って、DropDown リストのデフォルト値を次のように定義しようとしています。

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

しかし、次のエラーが発生しています:

「'String' はデリゲート型ではないため、ラムダ式を 'String' に変換できません。」

これを達成する方法で、何も選択されていない場合は「支払いなし」が返されます。

4

1 に答える 1

0

さて、最初に、DropDownListForあなたDropDownListの最初の議論がExpression(Of Func(Of TModel, TProperty))

どちらの場合もDropDownList/For、最後に2つの文字列を使用するオーバーロードはありません。1つはデフォルトのテキスト用で、もう1つはデフォルト値用です。

もし、するなら

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

「NoneSelected」が選択されたオプションの場合、Model.Typeの値はnullになります。

デフォルト値とテキストを完全に管理したい場合は、SelectListItem(のように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 に答える