Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Asp.net-在多个操作方法中使用相同的信息_C#_Asp.net_Asp.net Mvc_Session Variables - Fatal编程技术网

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,我相信这就是它的所在。如果有,这是一个很好的选择,如果没有,则可以在标准服务器设置上实现另一个依赖项。