C# 在控制器操作之间传递数据
嗨,我找不到在一个控制器内的动作方法之间传递数据的方法。简化的代码示例如下所示:C# 在控制器操作之间传递数据,c#,asp.net-mvc,C#,Asp.net Mvc,嗨,我找不到在一个控制器内的动作方法之间传递数据的方法。简化的代码示例如下所示: public class HomeController : Controller { int latestID; // GET: Home public ActionResult Index() { latestID = 50000; return View(); } // GET: Generate public Acti
public class HomeController : Controller
{
int latestID;
// GET: Home
public ActionResult Index()
{
latestID = 50000;
return View();
}
// GET: Generate
public ActionResult Generate()
{
// using the latestID here
return View();
}
}
当应用程序启动且
latestID
设置为50000时加载索引。但当我单击映射到API GET request Generate的按钮时,latestID
突然为空。我试图实现TempData和Session,但没有成功。任何帮助都将不胜感激 我觉得这里有两种可能性,即检索的值是针对使用网站的所有用户的用户会话或其全局会话
如果该值是特定于用户的,则可以通过会话阶段管理(如Viewbag)对其进行管理。或者,如果期望仅在服务器端维护该值,则需要通过数据库或内存缓存等持久性机制再次检索该值
如果该值在使用网站的所有用户中都是通用的,那么可以通过单例对象的依赖项注入来实现(这可以是数据库管理器或缓存管理器,也可以是简单的内存对象)。静态对象也可以使用,但并不理想,因为应用程序不支持跨实例的水平可伸缩性 @SamvelPetrosov从未使用在web应用程序中存储用户数据的
静态
。@code未发现在这个问题中没有一行是他在最新版本中存储用户数据最新版本
?它是否包含用户的数据?更多细节可能会帮助您获得最佳实践。好的。但是为什么需要将其存储在Web应用程序中呢?我是说当你拿到身份证的时候你怎么用?如果我们有答案,我可能会帮你一个好的做法,因为像你想做的那样存储数据库Id是一个糟糕的做法。网络是无状态的。每次发出请求时,控制器的一个新实例将被初始化(并且latestID
将被初始化为其默认值)。在Index
方法中为它设置一个值是没有意义的,因为一旦方法完成,它就会被释放