我可以肯定的是,我缺乏理解导致我无法正常工作。
我目前有一个表单,该表单会将过滤参数发布回控制器,然后它将建立查询。我建立的当前查询不会接缝实际做任何事情。至少当这样分离时不是这样。
从我阅读的内容来看,类似的方法应该可以工作,但是从我的测试来看,它没有任何作用。
[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。他们的缝线很有趣,也许有点矫and过正,也许吗?我不知道。也许我的大脑太疲惫,看不到明显的答案...
对于解决方案的任何建议或对解决方案的提示,我将不胜感激。
另外,设置断点并检查其中的内容request
。此外,您基于request
字段过滤数据,但是在每次循环迭代中,您过滤的结果越来越多,因此您必须仔细考虑这一点。
另外,当重定向到时Index
,您不会传递任何数据,我认为您应该传递a的结果query
,因此您可以在其中使用并显示它。因此,我将看看RedirectToAction
诸如的重载RedirectToAction(String, Object)
。另外,您可以看一下View
具有类似功能的方法RedirectToAction
。
话虽如此,您应该传递查询的结果,因此您需要获取查询的结果,例如,通过调用ToList
method。
这是一种发布方法,因为他将表单发布回了控制器。
@TomTom同意,但是可以通过查询字符串参数来完成。据我所知,post方法应该用于修改数据,而不仅仅是获取数据。
查询字符串参数,这就是所谓的。我想知道它叫什么,但是它从来没有真正出现在我的脑海中。需要更深入研究的东西。由于缺乏有关该主题的技术词汇,我大部分时间对Form Post方法很感兴趣。感谢您的投入。