在MVC中导航时保存变量值

时间:2018-07-07 13:26:09

标签: c# model-view-controller viewdata tempdata state-management

我有一页 ABC.cshtml 。在页面中,我使用“ 返回”和“ 下一步”按钮编写了多个模式弹出窗口的代码。当我单击按钮时,它会从一种模式导航到另一种模式。

我有“ Id ”,当我从一个模式导航到另一个模式时,我需要保留该名称,但“ Id”为空。

我已使用 Tempdata / Viewdata / Viewbag / Hidden字段来保留数据,但是没有用。我不能使用会话在这里保存状态。还有其他方法吗?

有人可以帮我解决这个问题吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用缓存

添加System.Runtime.Caching

enter image description here

//Add cache named Key1. It will expire in 10 minute
CacheWrapper.Add("Key1", new List<int>(), 10);

//Get the cache
var result = CacheWrapper.Get<List<int>>("Key1");

//Delete the cache
CacheWrapper.Delete("Key1");

像这样创建包装器类

public class CacheWrapper
{
    private static ObjectCache cache = null;

    public static ObjectCache Cache
    {
        get
        {
            if (cache == null)
            {
                cache = MemoryCache.Default;
            }
            return cache;
        }
    }

    public static void Add(string key, object data, double expireInMinute)
    {
        Delete(key);
        Cache.Add(key, data, DateTime.Now.AddMinutes(expireInMinute));
    }

    public static object Get(string key)
    {
        if (!Cache.Contains(key))
            return null;
        return Cache[key];
    }

    public static void Delete(string key)
    {
        if (Cache.Contains(key))
        {
            Cache.Remove(key);
        }
    }
}

答案 1 :(得分:0)

您可以使用隐藏字段

<input type="hidden" name="Language" value="English">

在asp.Net中:

<asp:HiddenField id="Language" runat="server" value="English"/>