我使用Razor .cshtml页面的会话变量获得了一些时髦的行为。基本上在某些页面上,我检查是否设置了Session变量,如果不是,我设置它。我一直得到一个空对象引用。
我相信这是因为Razor最终是为MVC设计的,我做了一些关于MVC生命周期的阅读,显然会话对象在lifecyde注入一个不同的点然后说asp.net webforms。所以当我尝试在我的网页上使用它时,它还没有。
所以我的问题是基于Razor的简单网站(不是MVC,但是那样移动)什么是检查是否设置了会话变量(比如说“访问级别”)的有效方法经常。那将是问题的第一部分。
问题的第二部分是如果这是不好的做法,那么我应该采取什么措施来取代这种做法呢?
感谢您的投入。
答案 0 :(得分:5)
ASP.NET MVC 3中的Razor视图页面与使用Razor语法的ASP.NET网页几乎完全相同。为了记录,Razor最初是为网页而不是MVC开发的 - 我们后来重新设计它以确保它在两种情况下都是“一等公民”。
因此,无论你在何处使用会话状态都应该正常工作 - 从Web页面文件,MVC控制器甚至是MVC视图(尽管大多数人认为在MVC视图中使用Session状态是一个不好的做法)。