生成一个MVC模型以在多个视图中使用

时间:2016-03-01 05:33:04

标签: c# asp.net-mvc

我对MVC和ASP.NET的概念相当新,我想知道是否有可能创建一次我的模型对象并在不同视图中使用它。

我正在编写一个通过Web服务调用获取JSON对象的应用程序,该调用包含要填充的所有信息。 Web服务调用需要 ID 来创建正确的JSON对象。由于JSON对象非常大,因此Web服务调用大约需要2秒钟才能下载JSON对象。切换视图时,每次都会生成模型(包括下载JSON对象),这会增加巨大的开销。

为不同的视图生成不同的视图模型不起作用,因为下载是瓶颈。

有任何想法如何解决这个问题?可以以某种方式存储下载的JSON字符串以用于不同的视图吗?如果 ID 更改,是否可以仅下载JSON对象?

此致

1 个答案:

答案 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,代码将非常相似