C# 创建控制器C中所有方法中可用的共享属性#

C# 创建控制器C中所有方法中可用的共享属性#,c#,asp.net,asp.net-mvc,asp.net-mvc-4,static,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Static,我正试图在我的C#控制器中实现一个共享属性,我将其定义为: public string guid; public string _gu_id { get { return guid; } set { guid = value; } } public ActionResult ActionFirst() { _gu_id = something...; } public ActionResult ActionSecond() { //

我正试图在我的C#控制器中实现一个共享属性,我将其定义为:

public string guid;
    public string _gu_id
    {
        get { return guid; }
        set { guid = value; }
    }

public ActionResult ActionFirst()
{
 _gu_id = something...;
}

public ActionResult ActionSecond()
{
// checking now if the _gu_id is !=null
if(_gu_id!=null)
// do something here
}
像这样,属性在第一个操作中设置,但在第二个操作中其值不可用

我可以声明它是静态的,但这不是一个解决方案,因为在web中应该避免使用静态变量

编辑:要更详细地解释问题,请执行以下操作:


当在第一个ActionFirst方法中设置了适当的id时,我需要能够在ActionSecond方法中获取它的值,而不使用静态变量…

每当您重定向到新控制器的新操作方法时,这是一个新请求,并且您不能像您所寻找的那样保留从一个请求到另一个请求的值

而是像这样使用会话变量

Session["guid"] = "YourValue";

无论何时,当您重定向到新控制器的新操作方法时,这都是一个新的请求,您不能像您所寻找的那样保留从一个请求到另一个请求的值

而是像这样使用会话变量

Session["guid"] = "YourValue";

如果您避免使用持久会话变量(通常是个好主意),MVC还提供在重定向之间挂起数据。

如果您避免使用持久会话变量(通常是个好主意),MVC还提供在重定向之间挂起数据。

XY问题。您有一个问题,您认为解决方案是“在我的控制器中创建一个成员变量”。解释您正试图解决的问题,因为控制器是根据请求创建的。您可能需要在会话、令牌、,header或其他地方。@CodeCaster问题如下:在第一个方法中设置变量GUID时,第二个方法中需要可用…我提到我可以使用静态变量,但我避免使用它们,因为我对它们有过非常不愉快的经历…@CodeCaster在第一个方法中设置_gu_id变量时,调用第二个方法时,我需要在第一个方法中设置“第二个方法中的id值…”“变量GUID需要在第二个方法中可用”-然后将其粘贴到会话、数据库中,或者将其传递给用户,以便用户在第二个请求时返回。@CodeCaster很好,会话似乎是最好的解决方案,谢谢!:)XY问题。您有一个问题,您认为解决方案是“在我的控制器中创建一个成员变量”。解释您正试图解决的问题,因为控制器是根据请求创建的。您可能需要在会话、令牌、,header或其他地方。@CodeCaster问题如下:在第一个方法中设置变量GUID时,第二个方法中需要可用…我提到我可以使用静态变量,但我避免使用它们,因为我对它们有过非常不愉快的经历…@CodeCaster在第一个方法中设置_gu_id变量时,调用第二个方法时,我需要在第一个方法中设置“第二个方法中的id值…”“变量GUID需要在第二个方法中可用”-然后将其粘贴到会话、数据库中,或者将其传递给用户,以便用户在第二个请求时返回。@CodeCaster很好,会话似乎是最好的解决方案,谢谢!:)你是说like TempData[“Key”]?你是说like TempData[“Key”]?