如何从 2 个不同的视图调用变量

How to call a variable from 2 different views

我正在尝试制作一个 webApp,但我遇到了冲突,因为我有一个在控制器中调用的模型,但每次我在具有相同控制器的视图之间切换时,我的模型实例都会重置并采用再次初始值。

DataTable dt;

public AdminUsers()
{
    dt = (new Userdb()).GetUsers();
}

public ActionResult Admin()
{
    ... // do whatever with dt before showing the results
    return View(this.dt);
}

public ActionResult Results()  // dt resets with the initial values
{
    return View(this.dt);
}

如何在修改后保留视图之间的值?

为此,您可以使用 Session

就像你初始化它时那样(例如在你的 AdminUsers() 方法中)

Session["dt"] = (new Userdb()).GetUsers();

然后检索您的值,但始终检查会话是否不为空:

If(Session["dt"] != null)
{
  DataTable myTable = (DataTable) Session["dt"];
  //Do whatever you need with your dt.....
}

您可以将其放入 ViewData 中:

dt = (new Userdb()).GetUsers();
ViewData["Datable"] = dt;

您可以使用 Session ...会话将允许您存储当前会话的数据,然后您将能够在该会话中的任何视图中访问该数据...

Session["data"] = dt;

然后在您的视图中访问该会话,将其转换为 DataTable 并使用它..

(DataTable)Session["data"];

您不应该将 dt 变量设为实例变量,而是在每个操作中加载它并更新 Post 上的记录,这样您将始终获得最新的新鲜数据。 不建议使用会话,因为它会限制您的应用程序可扩展性。

此外,您应该使用 POCO 来传输数据,而不是 DataTable