我对MVC和ASP.NET的概念相当新,我想知道是否有可能创建一次我的模型对象并在不同视图中使用它。
我正在编写一个通过Web服务调用获取JSON对象的应用程序,该调用包含要填充的所有信息。 Web服务调用需要 ID 来创建正确的JSON对象。由于JSON对象非常大,因此Web服务调用大约需要2秒钟才能下载JSON对象。切换视图时,每次都会生成模型(包括下载JSON对象),这会增加巨大的开销。
为不同的视图生成不同的视图模型不起作用,因为下载是瓶颈。
有任何想法如何解决这个问题?可以以某种方式存储下载的JSON字符串以用于不同的视图吗?如果 ID 更改,是否可以仅下载JSON对象?
此致
答案 0 :(得分:2)
这些方面的东西可行:
public ActionResult MyView(int someId)
{
string json = this.GetJson(someId);
var model = new MyViewModel(json);
return this.View(model);
}
private string GetJson(int id)
{
string cacheKey = "myJsonCacheKey" + id;
string cachedJson = this.HttpContext.Cache[cacheKey] as string;
if (cachedJson != null)
return cachedJson;
string actualJson = new WebClient().DownloadString("http://whatever");
this.HttpContext.Cache.Insert(cacheKey, actualJson);
return actualJson;
}
只需注意2点:
HttpContext.Cache
,代码将非常相似