如何从 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
我正在尝试制作一个 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