我已经阅读了许多有关此问题的教程,我找不到类似于我的情况。对另一个视图发布的结果进行排序
我有一个索引视图,里面有一个搜索表单来过滤我的数据库中可用的结果。
这里的简化版本我为我的索引视图控制器动作:
[HttpPost]
public ActionResult Index(String carMake, String carModel)
{
var cars = from d in db.Cars
select d;
if (!String.IsNullOrEmpty(carMake))
{
if (!carMake.Equals("All Makes"))
{
cars = cars.Where(x => x.Make == carMake);
}
}
if (!String.IsNullOrEmpty(carModel))
{
if (!carModel.Equals("All Models"))
{
cars = cars.Where(x => x.Model == carModel);
}
}
cars = cars.OrderBy(x => x.Make);
return View("SearchResult", cars);
}
,你可以看到,我从索引视图获取数据,并将其张贴到我的信息搜索结果直接观看,无需使用任何public ActionResult SearchResult(){...}
的。但我在我的控制器中有public ActionResult SearchResult(){...}
方法。
现在,我正在尝试对结果进行排序。我怎样才能做到这一点?
我已经尝试了许多不同的方法将数据从我的索引方法传递给搜索结果方法,如TempData等。但与他们的问题是,当我点击排序按钮页面重新加载和我从我的索引视图形式采取的查询将全部为空,因为TempData仅用于在方法之间传递数据和方法被召回时,数据将消失,全部为空。
我在脑海中有一些解决方案,但我不确定他们是否能解决问题,以及他们是否可以提出最佳/最简单的解决方案。将我从索引页获得的查询记录到一张表中(我认为这不是一个明智的做法)。
谢谢你的完整和易于理解的答复:)。不过,我在我的控制器中试过了你的解决方案它确实会传递这些值,但是当我尝试对结果进行排序时(这些结果是由用户从Index视图页给出的值进行筛选的)所有已传递的值都将为空。 我无法尝试从表格中发送变量,因为我不知道如何去做。但我会研究它并找出答案。 – moamzia