在 MVC 中导航时保存变量值
Save variable value while navigation in MVC
我只有一页 ABC.cshtml。在页面中,我为带有“Back”和“Next”按钮的多模式弹出窗口编写了代码。当我单击按钮时,它会从一种模式导航到另一种模式。
我有“Id”,当我从一个模式导航到另一个模式但 "Id" 变为空时我需要坚持。
我使用了Tempdata/Viewdata/Viewbag/Hidden字段来持久化数据,但没有用。我不能在这里使用会话来保存状态。还有其他方法吗?
有人可以帮我解决这个问题吗?
提前致谢。
您可以使用隐藏字段
<input type="hidden" name="Language" value="English">
在asp.Net中:
<asp:HiddenField id="Language" runat="server" value="English"/>
你可以使用缓存
添加System.Runtime.Caching
//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");
像这样创建包装器class
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);
}
}
}
我只有一页 ABC.cshtml。在页面中,我为带有“Back”和“Next”按钮的多模式弹出窗口编写了代码。当我单击按钮时,它会从一种模式导航到另一种模式。
我有“Id”,当我从一个模式导航到另一个模式但 "Id" 变为空时我需要坚持。
我使用了Tempdata/Viewdata/Viewbag/Hidden字段来持久化数据,但没有用。我不能在这里使用会话来保存状态。还有其他方法吗?
有人可以帮我解决这个问题吗?
提前致谢。
您可以使用隐藏字段
<input type="hidden" name="Language" value="English">
在asp.Net中:
<asp:HiddenField id="Language" runat="server" value="English"/>
你可以使用缓存
添加System.Runtime.Caching
//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");
像这样创建包装器class
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);
}
}
}