2016-12-01 112 views
-2

我有一个MVC项目。我的一个模型被称为'ASR'。在'ASRController'我有几个动作,其中包括:public ActionResult Index()这是一个Get。我如何知道这是否是第一次?

Index()操作发生在页面的第一个显示(Get)上。我想让这个Action可以在我的整个项目运行和其他时候第一次调用和写入不同的代码片段(换句话说,如果它是第一次显示此页面的视图 - 应该这样做......并且如果我们已经显示了该视图,然后我们去了项目中的其他位置(“网站”)并返回到此页面,则应该做其他事情。 ..) 我试图寻找答案,但没有运气... 有人可以帮我这个吗? 谢谢

回答

0

一种方式来实现你的目标是这样的:

 public ActionResult Index() 
     { 
      if (Session["AsrIndex"] == null) 
      { 
       Session["AsrIndex"] = DateTime.Now; 
       return View("Index"); 
      } 
      return View("Index1"); 
     } 

上述行动将这样工作:

  1. 第一次,当你运行这个动作的Session会null,并且动作会返回视图“Index

  2. 第二次Session会不能为null,动作将返回视图"Index1"

第三,第四,......这个动作的运行将返回Index1

+0

会话将被重置,应用程序池将重新启动。在应用程序池回收后,它将看起来像第一次访问。 – Fran

+0

是的,你是对的! –

0

你可以有你的控制器操作检查一个cookie的存在。

 if (HttpContext.Request.Cookies["<action name>"] == null) 
     { 
      HttpContext.Response.SetCookie(new HttpCookie("<action name>")); 

      //do your first time stuff 
     } 
     else 
     { 
      //do not first time stuff 
     } 
0

各种方式来做到这一点: -

  1. 在你的控制器创建一个全局静态变量和指标的行动增加了。
  2. 创建会话
相关问题