簡體   English   中英

asp.net mvc-在操作之間重用控制器值

[英]asp.net mvc - reusing controller values among actions

我有一個主要的登陸頁面(初始頁面),需要在其中進行服務呼叫。 該模型的值將幫助我確定是否顯示其他頁面/操作。

讓我們選擇一個方案,如果它是過去的“審閱日期”,我將顯示僅在同一控制器.cs類中的新頁面/操作“ ReviewData”。 如果該日期是將來的日期,我將顯示另一個頁面/操作“摘要”,它也使用相同的.cs控制器類。

現在,如果我轉到“ ReviewData”,則需要與上述相同的服務調用數據。 我不想時不時調用此服務,因為所有這些嘗試都具有相同的值。 我如何避免這種情況,並且可能可以從第一個服務調用中重用數據/模型值?

您需要一些緩存策略,這里是簡單的緩存助手類

using System.Runtime.Caching;  

public class cacheservice: ICacheservice
{
    public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
    {
        T item = MemoryCache.Default.Get(cacheKey) as T;
        if (item == null)
        {
            item = getItemCallback();
            MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10));
        }
        return item;
    }
}

interface ICacheService
{
    T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;
}

用法:

cacheservice.GetOrSet("CACHEKEY", (delegate method if cache is empty));

高速緩存提供程序將檢查高速緩存中是否有“ CACHEKEY”名稱,如果沒有,它將調用委托方法以獲取數據並將其存儲在高速緩存中。

例:

var Data=cacheService.GetOrSet("CACHEKEY", ()=>SomeRepository.GetData())

您也可以根據需要進行自定義

問題的答案:-是否可以重用第一個服務調用中的數據/模型值? -是的 您可以使用Tempdata實現此目的: https ://msdn.microsoft.com/zh-cn/library/system.web.mvc.tempdatadictionary.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM