Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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# 将多个查询结果返回到各个视图部分_C#_Asp.net Mvc_Database - Fatal编程技术网

C# 将多个查询结果返回到各个视图部分

C# 将多个查询结果返回到各个视图部分,c#,asp.net-mvc,database,C#,Asp.net Mvc,Database,我有两个女主角“最受欢迎”和“即将结束” 我想在我的数据库中显示最受欢迎的物品,这些物品的拍卖日期是“即将结束” 使用注释掉的代码,在Index()控制器中,在下面的代码中,我能够成功地查询数据库中的“最流行”项目,并将这些结果返回到页面。但是我正在尝试将这两组数据返回到页面——最流行的数据和即将结束的项目,以便部分视图\u AuctionTile使用 我对即将结束的项目进行了查询 下面的解决方案代表了一个解决方案路径,我已经设定了该路径,以实现能够返回两组数据——最常用的数据和即将结束的项目到

我有两个女主角“最受欢迎”和“即将结束”

我想在我的数据库中显示最受欢迎的物品,这些物品的拍卖日期是“即将结束”

使用注释掉的代码,在
Index()
控制器中,在下面的代码中,我能够成功地查询数据库中的“最流行”项目,并将这些结果返回到页面。但是我正在尝试将这两组数据返回到页面——最流行的数据和即将结束的项目,以便部分视图\u AuctionTile使用

我对即将结束的项目进行了查询

下面的解决方案代表了一个解决方案路径,我已经设定了该路径,以实现能够返回两组数据——最常用的数据和即将结束的项目到视图。我想我有两个问题:

1) 为什么我不能这样做:

var db = new AuctionsDataContext();
var mostPopular = db.Auctions.Where(x => x.EndTime > DateTime.Today).OrderByDescending(x => x.viewCount).ToArray();
var endingSoon = db.Auctions.Where(x => x.EndTime > DateTime.Today).OrderByDescending(x => x.EndTime).ToArray();
return View(mostPopular, endingSoon);
2) 考虑到我在下面发布的解决方案路径,并在视图模型中创建两个列表结构,为什么Intellisense没有检测到属性
mostpopulariems
,如屏幕截图所示

@foreach (var item in Model.mostPopularItems)
景色

@model IEnumerable<MyAuctionApp.Models.Auction>

@{
    ViewBag.Title = "Home Page";
}

<div class="row">

    <div id="popular" class="col-md-4 col-lg-4">
        <h2>Most Popular Items</h2>

        @foreach (var item in Model.mostPopularItems)
        {
            @Html.Partial("_AuctionTile", item)

        }
</div>

<div id="ending" class="col-md-4 col-lg-4">
      <h2>Auctions Ending Soon</h2>
       @foreach (var item in Model)
        {
           @Html.Partial("_AuctionTile", item)
        }
 </div>
但是,正如您从所附的屏幕截图中看到的,
mostPopularItems
未拾取在
AuctionViewModel
中初始化的属性 由Intellisense升级为现有,在线路中

@foreach (var item in Model.mostPopularItems)


欢迎您的解决方案。但拜托,我对这个过程还不熟悉。所以假设我需要你为我解释一切

您可以看到属性
mostPopularItems
endingSoon
,因为在视图模型中,您将它们定义为
静态
。在您的视图中,您正在使用以下行:

@foreach (var item in Model.mostPopularItems)
这将不起作用,因为模型包含AuctionViewModel的实例,静态只能通过类本身而不是从实例进行访问

你需要重构你的代码。视图模型必须如下所示:

public class AuctionViewModel
{
    public List<Auction> mostPopularItems {get; set; }
    public List<Auction> endingSoon {get; set; }

        public AuctionViewModel(AuctionsDataContext db)
        {
            mostPopularItems = db.Auctions.Where(x => x.EndTime > DateTime.Today).OrderByDescending(x => x.viewCount).ToList();
            endingSoon = db.Auctions.Where(x => x.EndTime > DateTime.Today).OrderByDescending(x => x.EndTime).ToList();
        }
   }
}

因此,在重构之后,您的foreach代码将正常工作。

您可以看到属性
mostPopularItems
endingSoon
,因为在视图模型中,您将它们定义为
static
。在您的视图中,您正在使用以下行:

@foreach (var item in Model.mostPopularItems)
这将不起作用,因为模型包含AuctionViewModel的实例,静态只能通过类本身而不是从实例进行访问

你需要重构你的代码。视图模型必须如下所示:

public class AuctionViewModel
{
    public List<Auction> mostPopularItems {get; set; }
    public List<Auction> endingSoon {get; set; }

        public AuctionViewModel(AuctionsDataContext db)
        {
            mostPopularItems = db.Auctions.Where(x => x.EndTime > DateTime.Today).OrderByDescending(x => x.viewCount).ToList();
            endingSoon = db.Auctions.Where(x => x.EndTime > DateTime.Today).OrderByDescending(x => x.EndTime).ToList();
        }
   }
}

因此,在重构之后,您的foreach代码将正常工作。

谢谢。我现在比以往任何时候都更了解实例变量和静态变量之间的区别,因为它涉及到访问它们的属性。令人惊奇的东西。db上下文不应该出现在您的视图模型中——填充数据是控制器的责任(如果您正在编辑数据,这将永远不会起作用)@StephenMuecke。但在这里,他只是显示数据。对于架构问题,我看到了这一点。但是,因为提问者似乎是新手(他只是学习什么是静态成员和实例成员),我认为它将解决当前的问题。只要他继续编写代码,他就会发现问题,或者从某个地方了解到他没有遵循好的实践。我们都是从错误中学习的:-)谢谢。我现在比以往任何时候都更了解实例变量和静态变量之间的区别,因为它涉及到访问它们的属性。令人惊奇的东西。db上下文不应该出现在您的视图模型中——填充数据是控制器的责任(如果您正在编辑数据,这将永远不会起作用)@StephenMuecke。但在这里,他只是显示数据。对于架构问题,我看到了这一点。但是,因为提问者似乎是新手(他只是学习什么是静态成员和实例成员),我认为它将解决当前的问题。只要他继续编写代码,他就会发现问题,或者从某个地方了解到他没有遵循好的实践。我们都是从错误中学习的:-)
@model MyAuctionApp.ViewModels.AuctionViewModel