如何在c#方法中设置全局变量
我试图将currenturl分配给SiteName(全局变量),但在更改为新方法SiteName(全局变量)时变为null。 有人能帮忙吗如何在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(); } 我认
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代码>。我必须说;您的问题似乎表明您应该阅读有关类和对象的内容。感谢您的指导。感谢通过向上投票并将答案标记为答案来表达;-)