C#Asp.net-在多个操作方法中使用相同的信息
我感到困惑,想知道在C#Asp.net-在多个操作方法中使用相同的信息,c#,asp.net,asp.net-mvc,session-variables,C#,Asp.net,Asp.net Mvc,Session Variables,我感到困惑,想知道在多动作方法中使用相同信息的最佳实践。我有五个值要在多个action方法中使用。我有一个model类,它有五个值 目前,我正在将数据存储到会话中,并在我需要的每个action方法中获取数据 [HttpPost] public ActionResult Index(Model model){ Session["A"]=mode.a; Session["B"]=mode.b; Session["C"]=mode.c; Session["D"]=mod
多动作
方法中使用相同信息
的最佳实践。我有五个值要在多个action
方法中使用。我有一个model
类,它有五个值
目前,我正在将数据存储到会话中,并在我需要的每个action
方法中获取数据
[HttpPost]
public ActionResult Index(Model model){
Session["A"]=mode.a;
Session["B"]=mode.b;
Session["C"]=mode.c;
Session["D"]=mode.d;
Session["D"]=mode.d;
}
[HttpGet]
public ActionResult Action1(){
Label1.Text=Session["A"];
Label2.Text=Session["B"];
Label3.Text=Session["C"];
Label4.Text=Session["D"];
Label5.Text=Session["E"];
}
[HttpGet]
public ActionResult Action2(){
Label1.Text=Session["A"];
Label2.Text=Session["B"];
Label3.Text=Session["C"];
Label4.Text=Session["D"];
Label5.Text=Session["E"];
}
所以我的问题很简单,我能在每个动作方法中传递模型类的对象吗?或者在每个操作方法中使用模型的对象
还有其他最佳实践,或者使用会话
是更好的方法
我的所有操作
方法的视图
使用相同的`模型类。您可以将模型本身存储在会话
中,而不是存储该对象的每个属性,这可能会使存储更容易一些
Session["myModel"]=model;
Label1.Text=((Model)Session["myModel"]).a;
如果在会话
之外没有该信息的持久性,那么就没有其他方法在多个不同的GET
上访问对象了您可以将模型本身存储在会话
中,而不是存储该对象的每个属性,这可能会使存储变得更容易一些
Session["myModel"]=model;
Label1.Text=((Model)Session["myModel"]).a;
如果在会话
之外没有该信息的持久性,就不会有其他方法在多个不同的GET
s上访问对象,但会话可能会影响服务器和应用程序的性能。如果有1百万用户正在访问该网站,我会将该数据存储到会话中,这样服务器上的负载可能会增加。毫无疑问,会话中我存储的数据最大为1KB
。如果您希望有那么多用户,您将需要为会话使用某种共享存储,因为您不太可能从单个服务器上运行它。您可以从数据库运行会话信息,这样做的影响不可能比自定义持久性实现更大。对于大量用户的共享和持久性会话,Redis缓存会话状态提供程序是更好的选择。在链接上找到详细的实现,这将取决于用户是否想要连接azure,我相信这就是它的所在。如果你在那里,这是一个很好的选择。如果你不在那里,另一个依赖项可以在标准服务器设置上简单实现。但是会话可能会影响服务器和应用程序的性能。如果有1百万用户正在访问该网站,我会将该数据存储到会话中,这样服务器上的负载可能会增加。毫无疑问,会话中我存储的数据最大为1KB
。如果您希望有那么多用户,您将需要为会话使用某种共享存储,因为您不太可能从单个服务器上运行它。您可以从数据库运行会话信息,这样做的影响不可能比自定义持久性实现更大。对于大量用户的共享和持久性会话,Redis缓存会话状态提供程序是更好的选择。在链接上找到详细的实现,这将取决于用户是否想要连接azure,我相信这就是它的所在。如果有,这是一个很好的选择,如果没有,则可以在标准服务器设置上实现另一个依赖项。