首页 > 解决方案 > 在控制器动作之间传递数据

问题描述

嗨,我找不到在一个控制器内的 Action 方法之间传递数据的方法。简化的代码示例如下:

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 请求生成的按钮时,latestID它突然为空。我试图实现 TempData 和 Session 但没有运气。任何帮助将不胜感激!

标签: c#asp.net-mvc

解决方案


我觉得这里有 2 种可能性,即要检索的值是针对使用该网站的所有用户的用户会话或其全局值。

如果该值是特定于用户的,则可以通过 Viewbag 等会话阶段管理对其进行管理。或者,如果该值预计仅在服务器端维护,则需要通过一些持久性机制(如数据库或内存缓存)再次检索它。

如果该值在使用网站的所有用户中是通用的,则可以通过单例对象的依赖注入来实现(这可以是数据库管理器或缓存管理器,也可以是简单的内存对象)。也可以使用静态对象,但它并不理想,因为应用程序不支持跨实例的水平可伸缩性。


推荐阅读