首页 > 解决方案 > 我可以在 mvc 控制器中执行多个 sql server 查询并在 MVC 应用程序的单个视图中显示结果吗

问题描述

现在我有一个控制器,它执行单个查询并将其显示在视图中。我想执行另一个查询,根据过滤器获取记录数。我可以在同一个视图中执行此操作吗?

这是我当前的控制器类:

public class AutoController : Controller
{
    // GET: Auto
    public ActionResult Index(int? page)
    {
        var entities = new ticketsEntities();

        int pageNumber = (page ?? 1);
        return View(entities.Tickets.OrderByDescending(Tickets=>Tickets.TicketCreation).ToList().ToPagedList(page ?? 1, 5));
    }
}

标签: asp.netasp.net-mvchtml

解决方案


有2种方法:

  1. 使用 ViewBag

///////

//In controller
ViewBag["Total"] = entities.Tickets.Count();


//In View
<p>@ViewBag["Total"]</p>
  1. 使用自定义视图模型

是的,您可以创建一个新的模型类,填充它并将其传递给视图。

例如

public class MyCustomModel
{
   public IPagedList<Tickets> Tickets {get;set;}
   public long Total {get;set;}
}

在控制器中:

MyCustomModel mymodel = new MyCustomModel();
mymodel.Total = entities.Tickets.Count();
mymodel.Tickets = entities.Tickets.OrderByDescending(Tickets=>Tickets.TicketCreation).ToList().ToPagedList(page ?? 1, 5)

return View(mymodel);

然后在您的视图中,您可以将模型设置为:

@model MyCustomModel

<p>Model.Total</p>

推荐阅读