从MVC4中的Global.asax和Controller访问外部类属性

时间:2016-10-16 15:16:03

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

我在 Application_Start Global.asax )中创建了一个与自定义类( Casa.cs )属性交互的计时器:

protected void Application_Start()
    {
        ...
        Casa.LastUpdate = DateTime.Now; //ERROR
        System.Timers.Timer timer = new System.Timers.Timer(60000); // 1 minute
        timer.Enabled = true;
        timer.Elapsed += new System.Timers.ElapsedEventHandler(Casa.SetLastUpdate);
    }

ABOVE 示例中,Casa.LastUpdate = DateTime.Now;立即返回异常(' System.StackOverflowException' )。因此,如果我对其进行评论,它会继续尝试设置ViewBag.LastUpdate = Casa.LastUpdate;的Controller,但这行代码会在{{em>' System.StackOverflowException' }上生成异常 Casa.cs 类的{1}}部分。

我(显然)无法从View访问。

Casa.cs 类:

get { return LastUpdate; }

所以我的问题是, Casa.cs 类出了什么问题,我无法在 Global中设置 LastUpdate 属性。 asax 既不将它添加到Controller中的ViewBag中,也不从View中访问?

1 个答案:

答案 0 :(得分:0)

问题在于,在属性设置器中,您尝试设置相同的属性,而不是例如:class field。 Setter一遍又一遍地调用自己,直到堆栈溢出。 另外set { LastUpdate = DateTime.Now; }似乎不正确,也许你会set { lastUpdate = value; }

尝试类似:

     private static DateTime lastUpdate
     public static DateTime LastUpdate
        {
            get { return lastUpdate; }
            set { lastUpdate = DateTime.Now; }//or: = value
        }