ユーザーがmultiselectlist
some または none を選択できる場所がありますinputvoltages
。ユーザーが no を選択すると、呼び出し時にInputVoltages
クエリがスローされます。空のリストが返されないのはなぜですか?null exception
.Tolist()
MVC5 C# とエンティティ フレームワーク 6 を使用しています。
リポジトリ
public IQueryable<InputVoltage> All
{
get { return context.InputVoltages; }
}
コントローラ
var newInputVoltages = unitOfWorkPds.InputVoltageRepository
.All.Where(m => engineeringPdsEditViewModel.SelectedInputVoltages
.Contains(m.Id))
.ToList<InputVoltage>();
All
リストを返しますがSelectedInputVoltages
、何も選択されていない場合は null です。それが問題なのだろうかと思いました。
このクエリを使用して、インデックス ページに where ステートメントを追加すると、呼び出し時に null エラーが発生しません。ToList
IQueryable<EngineeringPdsIndexViewModel> query =
(from a in context.EngineeringPds
select new EngineeringPdsIndexViewModel
{
Id = a.Id,
Name = a.Name,
Status = a.Status,
AnnualQuantities = a.AnnualQuantities,
ToMarketDate = a.ToMarketDate,
SubmittedBy = a.SubmittedBy,
TargetPrice = a.TargetPrice
});
したがって、ブライアンは何が悪いのかについて正しい考えを持っていると思いますが、ここに拡張された問題があります。
IList<InputVoltage> inputVoltagesList = unitOfWorkPds.InputVoltageRepository.All.ToList();
それから
pdsEditViewModel.InputVoltageList = inputVoltagesList.Select(m => new SelectListItem { Text = m.Name, Value = m.Id.ToString() }); in my view I hav@Html.ListBoxFor(m => m.SelectedApprovals, Model.ApprovalList)
しかし、ユーザーが何も選択しないと、selectedInputvoltages がポスト コントローラー アクションに null として入ります。どうすれば空のリストとして入りますか?
アップデート
同じ問題に遭遇した人は誰でも、ブライアンの最初の回答で問題が説明されています。空のリストを含む ListBox を送信するための回避策については、こちらを参照してください。
Asp.net MVC の ListBoxFor 選択ボックスから null リストの代わりに空のリストを返すにはどうすればよいですか?