Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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#方法中设置全局变量_C#_Asp.net Mvc - Fatal编程技术网

如何在c#方法中设置全局变量

如何在c#方法中设置全局变量,c#,asp.net-mvc,C#,Asp.net Mvc,我试图将currenturl分配给SiteName(全局变量),但在更改为新方法SiteName(全局变量)时变为null。 有人能帮忙吗 public string SiteName; public ActionResult Admin() { string currentUrl = HttpContext.Request.Url.Segments.Last(); SiteName = currentUrl; return View(); } 我认

我试图将currenturl分配给SiteName(全局变量),但在更改为新方法SiteName(全局变量)时变为null。 有人能帮忙吗

public string SiteName;

public ActionResult Admin()
{
   string currentUrl = HttpContext.Request.Url.Segments.Last();

   SiteName = currentUrl;         

   return View();

}

我认为您不能定义全局变量,但您可以拥有静态成员

public static class MyStaticValues
{
   public static string currentUrl{get;set;}
}
然后,您可以从代码中的任何位置检索:

String SiteName = MyStaticValues.currentUrl + value.ToString();

由于您使用的是asp:and对象,因此:

public ActionResult Admin()
{
   string currentUrl = HttpContext.Request.Url.Segments.Last();

   //per session (let's say: per user)
   //you can read and write to this variable
   Session["SiteName"] = currentUrl;   

   //"global" variables: for all users
   HttpContext.Application["SiteName"] = currentUrl;

   return View();
}
在您有权访问httpcontext的整个应用程序中,您可以以相同的方式检索它

public ActionResult Foo()
{
   //per session (let's say: per user)
   //you can read and write to this variable
   var currentUrl = Session["SiteName"];   

   //or

   //"global" variables: for all users
   currentUrl = HttpContext.Application["SiteName"];

   return View();
}

在asp.net MVC中使用全局变量不是最佳做法

我建议改用会话变量

public ActionResult MyPage(PageData pageData)
{
   Session["SiteName"] = HttpContext.Request.Url.Segments.Last();
   return View();
}
然后你可以在另一个ActionResult中调用它

public ActionResult MyPage2(PageData pageData)
{
   var SiteName = Session["SiteName"].ToString();
   return View();
}

您的变量不是真正的全局变量,它是一个公共类成员字段。要归档您的目标,您可以将其设置为静态:
publicstaticstringsitename。我必须说;您的问题似乎表明您应该阅读有关类和对象的内容。感谢您的指导。感谢通过向上投票并将答案标记为答案来表达;-)