2

コントローラがアクションを取得

IList<InputVoltage> inputVoltagesList = unitOfWorkPds.InputVoltageRepository.GetAll.ToList();

pdsEditViewModel.InputVoltageList = inputVoltagesList.Select(m => new SelectListItem { Text = m.Name, Value = m.Id.ToString() }); 

ビューモデル

    public IEnumerable<SelectListItem> InputVoltageList { get; set; }
    public List<int> SelectedInputVoltages { get; set; }

意見

    @Html.ListBoxFor(m => m.SelectedInputVoltages, Model.InputVoltageList)

ユーザーが何も選択していないときに null リストを受け取りたいのですが、selectedInputvoltages がポスト コントローラー アクションに null として入るのはどうすれば空のリストになるのでしょうか?

私は両方の答えが好きです。一方を他方よりも使用する利点はありますか?

4

2 に答える 2

2

ビューモデルのコンストラクターでリストを初期化すると、常に少なくとも空のリストになります。ビューモデルのインスタンスを構築するものはすべて、それに応じてリストを設定し続けます。

public class SomeViewModel
{
    public List<int> SelectedInputVoltages { get; set; }

    public SomeViewModel()
    {
        SelectedInputVoltages = new List<int>();
    }
}

このようにして、ビュー、コントローラーなどに関係なく、nullのインスタンスになることはありません。SomeViewModel

ビュー モデルのプロパティに常に既定値を設定したい場合は、それを配置するのに最適な場所はビュー モデルです。そのロジックが代わりにコントローラーまたはビューに配置されている場合は、使用するたびに繰り返す必要があります。

于 2013-11-01T18:12:39.030 に答える