如何从表单帖子中筛选数据库结果?



我很确定我的缺乏理解阻止了我让它工作。

我目前有一个表单,可以将过滤参数发布回控制器,然后它将建立查询。我构建的当前查询实际上无法执行任何操作。至少当它像这样分开时不会。

从我所读到的内容来看,这样的东西应该有效,但从我测试的内容来看,它不起作用。

[HttpPost]
public async Task<IActionResult> FilterPost()
{
var query = _context.Products;
query = query.OrderBy(m => m.Unit.Name)
.Include(m => m.Unit)
.Include(m => m.Attribute);
foreach (var request in Request.Form)
{
var AttributeValue = request.Value;
var AttributeName = request.Key;
query = query.Where(m => m.Attribute.Name == AttributeName)
.Where(m => m.Value >= int.Parse(AttributeValue));
}
return RedirectToAction("Index");
}

这种方法可能被我所做的所有测试所破坏。

我以前研究过使用ExpressionTrees和DynamicLINQ。他们确实令人困惑地感兴趣,也许有点矫枉过正,也许?我不知道。也许我的大脑太疲惫了,看不到显而易见的答案......

我将不胜感激任何解决方案的建议或对解决方案的提示。

另外,设置断点并检查request里面的内容。此外,您根据request字段过滤数据,但在每次循环迭代中,您过滤的结果越来越多,因此您必须仔细考虑这一点。

另外,当重定向到Index时,您不会传递任何数据,我认为您应该在那里传递query的结果,以便您可以使用它并在那里显示它。所以我会看看RedirectToAction的重载,例如RedirectToAction(String, Object).或者,您可以查看View具有类似功能的方法作为RedirectToAction

话虽如此,您应该传递查询的 RESULTS,因此您需要获取查询的结果,例如,通过调用ToList方法。

最新更新