您好,请您帮忙。我正在使用asp.net mvc 5应用程序,我的主视图有2部分。一个显示数据,另一个过滤数据。现在,我只显示所有数据而无需过滤。我读过一些教程,但是它们使用较少的属性进行过滤。就我而言,我有非常大的数据要过滤(超过10个属性)。
因此,我发现建议将viewmodel用作过滤器的参数,但是没有关于如何实现视图和控制器的任何建议。
我已经为这项工作做了一些准备,已经从控制器中获取了所有逻辑,并创建了一个单独的类,称为业务逻辑,并在其中放置了以下代码:
public IQueryable<ModelDTO> GetData(FilterViewModel filter)
{
var main = (from data in db.Table
// Other commands
select new
{
data.Id,
data.Title,
data.Creteria1,
data.Creteria2,
// Other fields
}).ToList();
// Other logic
if (filter != null)
{
// TODO develop the filter logic
if (filter.Creteria1.HasValue)
{
main = main.Where(x => x.Creteria1 == filter.Creteria1);
}
if (filter.Creteria2.HasValue)
{
main = main.Where(x => x.Creteria2 == filter.Creteria2);
}
// etc.
}
return main.AsQueryable();
}
My controller looks like this:
public ActionResult Index(FilterViewModel f)
{
var b = new BusinessLogic();
var m = b.GetData(f);
return View(m);
}
在我看来,我已经实现了具有所有字段的html表单,如何将其映射到FilterViewModel?
每当用户更改过滤器表单中的字段并单击“提交”按钮以过滤数据时,我都需要。
默认情况下,我需要填充FilterViewModel,因此最初它将加载所有数据。
在我看来,我也在使用DTOModel,所以我不能只是我的FilterViewModel。