修改已使用以下代码编写的复杂函数:
private List<string> Values()
{
if (ViewBag.Sample == null)
{
ViewBag.Sample = TestData();
}
}
// where TestData() hits the DB and returns corresponding result
值()在同一个文件中被称为多个位置,这将通过第一次点击DB TestData()返回,并且从下一次调用它将直接从ViewBag。
这是一个好方法吗?
我们在MVC中处理这种情况的所有替代方法是什么?由于数据库命中率很高,我们需要使用其他一些技术。
由于
答案 0 :(得分:0)
该代码应确保您第一次调用该方法时只触摸数据库。 如果在多个页面上使用相同的数据,您也可以在Cache-或Session类中使用相同的数据。
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以选择保留Session,Cache等数据。
答案 3 :(得分:0)
[OutputCache(Duration = 60)] // Caches for 60 seconds
private List<string> Values()
{
if (ViewBag.Sample == null)
{
ViewBag.Sample = TestData();
}
}
答案 4 :(得分:0)
MVC Model Binder
答案 5 :(得分:0)
您可以将数据保存在会话中:
Session['*your session key*'] = TestData();
然后像这样检索它:
var myData = Session['*your session key*'] as YouObject //cast it to an object if you need to.
或者您可以使用缓存:
System.Web.HttpRuntime.Cache[cacheKey] = TestData
并检索:
var myData =System.Web.HttpRuntime.Cache[cacheKey] as YourObject