我正在使用存储过程来获取数据以填充4个不同的剃刀页面。我只想使用一次查询,并使用同一查询中的不同数据刷新4个页面。数据以1个模型返回。有没有什么可以同时刷新所有内容?是否可以使用视图组件?
编辑:
我将cshtml页面绑定到模型,就像在MVC中一样:
@model IEnumerable<_Data.Models.KPI>
@foreach (var item in Model) {
@Html.DisplayFor(modelItem => item.KPI1)
}
我正在尝试最小化数据库查询。建议使用缓存以及SignalR。我会研究那些。感谢。
答案 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中使用数据管理做一些时髦的事情,并且还可以停止数据库查询并避免会话存储,并保持数据的强类型。