访问ASP.Net MVC中的Private Global变量

时间:2015-03-05 09:52:08

标签: c# asp.net asp.net-mvc asp.net-mvc-4

由于我正在处理的项目的性质,我想在我的控制器可以访问的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;
    }
}

3 个答案:

答案 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";
            }
        }

我不建议你这样做,你可以创建静态类和静态属性。