C# 从另一个类获取变量值
我想保存一些变量以备将来参考,所以我声明了一个类C# 从另一个类获取变量值,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我想保存一些变量以备将来参考,所以我声明了一个类Container.cs public class Container { public static String verifierCode; } 然后我有了我的HomeController.cs,在这里我更新了容器的变量值: public class HomeController : Controller { public ActionResult ValidateTwitterAuth() { Con
Container.cs
public class Container
{
public static String verifierCode;
}
然后我有了我的HomeController.cs
,在这里我更新了容器的变量值:
public class HomeController : Controller
{
public ActionResult ValidateTwitterAuth()
{
Container.verifierCode = Request.Query.ElementAt(2).Value;
//do some stuff
}
public String sendTweet(String NewTweet)
{
var userCreds = AuthFlow.CreateCredentialsFromVerifierCode(Container.verifierCode, Container.authorizationId);
var user = Tweetinvi.User.GetAuthenticatedUser(userCreds);
user.PublishTweet(NewTweet);
return "sent!";
}
}
它在validateWitteRauth
中使用特定值进行更新,但是当sendTweet
方法调用容器时。verifierCode
为空。
我显然试图调试它,但如果我将变量添加到quickwatch,我会得到它
错误CS0103:当前上下文中不存在名称“Container”
此外,类和容器都位于同一命名空间中。
你知道为什么会发生这种情况吗?我只是想声明一个全局变量,我可以从其他类/控制器访问它
如果这听起来像是一个初学者的问题,我很抱歉,但我刚刚开始接触asp.net
编辑:从答案来看,我处理问题的方式是错误的。因此,我安装了Microsoft.AspNetCore.Session
NuGet软件包,并按如下方式使用它:
HttpContext.Session.SetString("verifierCode", Request.Query.ElementAt(2).Value);
HttpContext.Session.SetString("authorizationId", Request.Query.ElementAt(0).Value);
现在它开始工作了。谢谢大家的回答 您可以将此数据存储到会话中而不是类中。如下例所示
public class HomeController : Controller
{
public ActionResult ValidateTwitterAuth()
{
Session["verifierCode"] = Request.Query.ElementAt(2).Value;
//do some stuff
}
public String sendTweet(String NewTweet)
{
var userCreds = AuthFlow.CreateCredentialsFromVerifierCode(Session["verifierCode"], Container.authorizationId);
var user = Tweetinvi.User.GetAuthenticatedUser(userCreds);
user.PublishTweet(NewTweet);
return "sent!";
}
}
我刚刚更改了仅验证代码您可以将此数据存储到会话中而不是类中。如下面的示例所示
public class HomeController : Controller
{
public ActionResult ValidateTwitterAuth()
{
Session["verifierCode"] = Request.Query.ElementAt(2).Value;
//do some stuff
}
public String sendTweet(String NewTweet)
{
var userCreds = AuthFlow.CreateCredentialsFromVerifierCode(Session["verifierCode"], Container.authorizationId);
var user = Tweetinvi.User.GetAuthenticatedUser(userCreds);
user.PublishTweet(NewTweet);
return "sent!";
}
}
我刚刚更改了仅验证代码Remove
static
@BenderBending您能详细说明解决问题的方法吗?您需要将此数据存储到会话中。您确定要引用您自己的自定义容器类而不是像System.ComponentModel.Container这样的本机.NET容器类吗?@BenderBending就是这样“否”。删除static
@BenderBending您能详细说明解决问题的方法吗?您需要将此数据存储到会话中。您确定引用的是您自己的自定义容器类而不是System.ComponentModel.Container之类的本机.NET容器类吗?@BenderBending所以这是一个“否”。但是,这不是问题的答案,这不是一个解决方案(不是很好的解决方案)是的,Caspar,我同意你的工作,但这不是一个好的解决方案,但你需要按照你的要求设计你的架构师。这很有效,但是,这不是问题的答案,这是一个解决方案(不是很好的解决方案),是的,Caspar,我同意你的这项工作,但这不是一个好的解决方案,但你需要设计你的建筑师为您的要求。