これと同じ問題が発生し続けます。永続的なバッキングを持たないビューモデルがあります。検索入力フォームを生成するのは単なる ViewModel です。
ユーザーが入力した値から大きな where 句を作成したいと考えています。アクションがパラメーター SearchViewModel として受け入れる場合、viewModel をサービス層に渡さずにこれを行うにはどうすればよいですか? サービスは ViewModels について知っているべきではありませんか? ああ、シリアル化すると、大きな文字列になり、キー/値が厳密に型指定されます。
SearchViewModelこれは単なるスニペットです。
[Display(Name="Address")]
public string AddressKeywords { get; set; }
/// <summary>
/// Gets or sets the census.
/// </summary>
public string Census { get; set; }
/// <summary>
/// Gets or sets the lot block sub.
/// </summary>
public string LotBlockSub { get; set; }
/// <summary>
/// Gets or sets the owner keywords.
/// </summary>
[Display(Name="Owner")]
public string OwnerKeywords { get; set; }
私のコントローラーアクションでは、このようなことを考えていました。しかし、このロジックはすべてコントローラーに属していないと思います。
ActionResult GetSearchResults(SearchViewModel model){
var query = service.GetAllParcels();
if(model.Census != null){
query = query.Where(x=>x.Census == model.Census);
}
if (model.OwnerKeywords != null){
query = query.Where(x=>x.Owners == model.OwnerKeywords);
}
return View(query.ToList());
}