0

ユーザーがケアプロバイダーを選択できるドロップダウンリストがあります。データベースではこれの値ですがnull、アプリケーションでは値が選択されます。null値が空白として表示されるようにするにはどうすればよいですか? これがデフォルトの動作だと思いました。ビューバッグの代わりにビューモデルで厳密に型指定されたリストを使用するように変更しましたが、これはその時点で壊れている可能性があります。

ビューのマークアップは次のとおりです。

<div class="editor-label">
    @Html.LabelFor(model => model.PsychologistId, "Psychologist")
</div>
<div class="editor-field">
    @Html.DropDownListFor(x => x.PsychologistId, Model.ListPsychologists)
    @Html.ValidationMessageFor(model => model.PsychologistId)
</div>

ビューモデルのプロパティは次のとおりです。

 [DisplayName("Psychologist")]
 public Nullable<int> PsychologistId { get; set; }

これが私のコントローラーの関連部分です:

    model.ListPsychologists = new SelectList(XXX, "Id", "DisplayName");

    return this.View(model);

ここで、XXX は、フィルター処理と並べ替えの条件を指定した単なる LINQ 式です。明確さとスペースのために省略されています。

コントローラーからビューに渡されたモデルはPsychologistIdnull. のSelectedValueプロパティmodel.ListPsychologistsは ですnull

4

3 に答える 3

1

PsychologicalId が int の場合、int は null 許容型ではないため、値 0 が割り当てられます。

上記の仮定が正しくない場合は、モデルとコントローラーを表示してください。

于 2012-07-25T18:12:10.953 に答える
0

SelectList に次のエントリが含まれていますId==nullか? 私はそれを疑います。つまり、値に一致する選択リストのエントリがないため、ブラウザは最初に使用可能なものを選択します。

Id = null解決策: SelectListにエントリを明示的に追加します。

于 2012-07-25T18:35:01.337 に答える
0

以前にこれらの問題がありましたが、それを修正するためにしたことは、SelectList ではなく、ビューモデルでドロップダウンに入力したいものの基本コレクションを送信することでした。そう:

model.ListPsychologists = XXX;

次に、ビューで:

@Html.DropDownListFor(x => x.PsychologistId, new SelectList(Model.ListPsychologists, "Id", "DisplayName", Model.PsychologistId))

MSDN で使用した SelectList コンストラクターのオーバーロードを確認してください。メモリから入力しています。基本的には、SelectList で使用するアイテムのコレクションを指定し、次にテキストと値のプロパティの名前 (アクション メソッド コードで行ったのと同じように) を指定し、4 番目のパラメーターはドロップ ダウンに設定する値です。

編集:また、メニューにデフォルト項目を追加するための DropDownListFor のオーバーロードがあります。「一択」みたいな。

于 2012-07-25T18:35:18.680 に答える