Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在单个ActionResult中返回三个IQueryable列表以在视图中显示_C#_Asp.net Mvc 4 - Fatal编程技术网

C# 在单个ActionResult中返回三个IQueryable列表以在视图中显示

C# 在单个ActionResult中返回三个IQueryable列表以在视图中显示,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我不熟悉ASP.NET、MVC、C#和编程,所以我一直在做一些个人项目和各种教程来学习 我遇到了一个问题,我不确定该转向哪条路寻求解决方案,或者我是否真的走上了正确的道路。下面的代码最好地解释了我要做的事情。我知道ViewModel不正确,但我认为它显示了我正在尝试做的事情。(为简洁起见,已截取了不同日期的所有交易和VAR) 意图是显示一个一瞥屏幕,它有一个昨天的交易在顶部,今天在中间,明天在底部的列表。 我一开始试过@Html.Partial,但当然那只是给我看了三次相同的列表。我还尝试了视图

我不熟悉ASP.NET、MVC、C#和编程,所以我一直在做一些个人项目和各种教程来学习

我遇到了一个问题,我不确定该转向哪条路寻求解决方案,或者我是否真的走上了正确的道路。下面的代码最好地解释了我要做的事情。我知道ViewModel不正确,但我认为它显示了我正在尝试做的事情。(为简洁起见,已截取了不同日期的所有交易和VAR)

意图是显示一个一瞥屏幕,它有一个昨天的交易在顶部,今天在中间,明天在底部的列表。 我一开始试过@Html.Partial,但当然那只是给我看了三次相同的列表。我还尝试了视图中的一些if语句,但在重复自己的过程中,这样做有些不对劲


有谁能给我一些建议,告诉我应该读哪些方面的书,以及我应该如何处理这个问题?提前谢谢

您走对了方向-您需要一个视图模型。这个类只是用来包含渲染视图所需的所有数据

在这种情况下,类似这样的操作可以:

public class MyActionViewModel
{
  public IEnumerable<Transaction> YesterdaysTransactions { get; set; }
  public IEnumerable<Transaction> TodaysTransactions { get; set; }
  public IEnumerable<Transaction> TomorrowsTransactions { get; set; }
}
最后一件事是告诉您的视图您将要给它的视图模型:

@model MyActionViewModel
然后您可以像这样访问数据

@Model.TodaysTransactions

我假设您使用的是AJAX,那么您应该使用JsonResult

return Json(new {
  yesterdaystransactions = allTransactions.Where(t => t.WhenItHappensId == yesterday).ToList(),
  todaystransactions = allTransactions.Where(t => t.WhenItHappensId == today).ToList(),
  tomorrowstransactions = allTransactions.Where(t => t.WhenItHappensId == tomorrow).ToList()
});
如果尝试渲染视图,请创建ViewModel

var model = new MyViewModel {
  Yesterdaystransactions = allTransactions.Where(t => t.WhenItHappensId == yesterday).ToList(),
  Todaystransactions = allTransactions.Where(t => t.WhenItHappensId == today).ToList(),
  Tomorrowstransactions = allTransactions.Where(t => t.WhenItHappensId == tomorrow).ToList()
};
return View("_SomePartialView", model);

我现在不使用AJAX,因为我认为它现在会使我的学习曲线变陡。我将把你的答案添加到书签中,当我尝试将AJAX添加到我的知识中时,我会回到这里。感谢你帮助我点击这里。真棒的回答。
return Json(new {
  yesterdaystransactions = allTransactions.Where(t => t.WhenItHappensId == yesterday).ToList(),
  todaystransactions = allTransactions.Where(t => t.WhenItHappensId == today).ToList(),
  tomorrowstransactions = allTransactions.Where(t => t.WhenItHappensId == tomorrow).ToList()
});
var model = new MyViewModel {
  Yesterdaystransactions = allTransactions.Where(t => t.WhenItHappensId == yesterday).ToList(),
  Todaystransactions = allTransactions.Where(t => t.WhenItHappensId == today).ToList(),
  Tomorrowstransactions = allTransactions.Where(t => t.WhenItHappensId == tomorrow).ToList()
};
return View("_SomePartialView", model);