由于我正在处理的项目的性质,我想在我的控制器可以访问的Global.asax文件中有一个私有变量。
示例Global.asax文件
public class MvcApplication : System.Web.HttpApplication
{
public string SomeString { get; set; }
}
示例控制器
public class HomeController : Controller
{
public ActionResult Index()
{
string theString = // How to access the SomeString from Global.asax;
}
}
答案 0 :(得分:2)
我会这样做:
public class BaseController : Controller
{
.....
protected string SomeString { get; set; }
....
}
public class HomeController : BaseController
{
public ActionResult Index()
{
string theString = SomeString;
}
}
答案 1 :(得分:1)
我想猜猜你为什么要"私人全球"。 Private的范围仅适用于班级。 如果您想确保没有其他控制器可以更改您的变量的值,但可以读取它。您可以将其设为常量或私人设置。
公开获取,但私人设置示例。
public class MvcApplication : System.Web.HttpApplication
{
public string SomeString { get; private set; }
}
虽然如果试图限制只有你的程序集可以访问变量而没有其他程序集(这似乎不太可能,因为你在MVC项目上工作)。你应该尝试内部,例如
public class MvcApplication : System.Web.HttpApplication
{
internal string SomeString { get; private set; }
}
答案 2 :(得分:0)
public class MvcApplication : System.Web.HttpApplication
{
public string SomeString { get; set; }
}
public class HomeController : Controller
{
public ActionResult Index()
{
MvcApplication mvc = new MvcApplication();
mvc.SomeString = "Test1";
}
}
我不建议你这样做,你可以创建静态类和静态属性。