MVC6 - 使用存储过程进行数据查询

时间:2017-03-07 18:12:40

标签: c# asp.net-mvc

我正在使用存储过程来获取数据以填充4个不同的剃刀页面。我只想使用一次查询,并使用同一查询中的不同数据刷新4个页面。数据以1个模型返回。有没有什么可以同时刷新所有内容?是否可以使用视图组件?

编辑:

我将cshtml页面绑定到模型,就像在MVC中一样:

@model IEnumerable<_Data.Models.KPI>

@foreach (var item in Model) {
    @Html.DisplayFor(modelItem => item.KPI1)
}

我正在尝试最小化数据库查询。建议使用缓存以及SignalR。我会研究那些。感谢。

2 个答案:

答案 0 :(得分:0)

简短的回答是,您无法通过使用SignalR之类的信息从服务器端推送信息,无法全部更新并获得预期结果。您似乎正在尝试最小化数据库查询,我建议使用缓存。这是一个很好的链接,可引导您完成架构设置。 https://msdn.microsoft.com/en-us/library/ff477235.aspx

如果结果是特定于用户的,那么您也可以尝试将数据存储在会话中,这需要较少的工作但不是最佳实践,但这只能在使用MVC的程序集中完成。如果您已将应用程序分成多个层,则仍然必须将该对象传递给前端程序集。

答案 1 :(得分:0)

一种可能性是将模型传递回服务器端Post方法。如果填充了数据并且发送给您的事件有一个页面按钮,那么您可以跟踪要显示的页码,然后将该数据发回。

我会在模型中有一个包含显示数据的对象(所以你要重复一点),并在post事件中用linq语句填充它......

Model.DisplayData = SourceData.Select(x).Skip(Model.PageNumber * Model.ItemsPerPage) 

我在工作,并且不能在这一刻提供更好的例子,但这可以让你开始(我今晚回家时会添加一个例子)。

这可以防止您在jQuery中使用数据管理做一些时髦的事情,并且还可以停止数据库查询并避免会话存储,并保持数据的强类型。