同样的问题不断出现。我有一个没有任何持久支持的 viewModel。它只是一个用于生成搜索输入表单的 ViewModel。
我想根据用户输入的值构建一个大的 where 子句。如果 Action 接受作为参数 SearchViewModel 如何在不将 viewModel 传递给服务层的情况下执行此操作?服务不应该知道 ViewModel 对吗?哦,如果我序列化它,那么它将是一个大字符串,并且键/值将是强类型的。
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());
}