在ASP.NET MVC3中使用ajax更改ViewBag

在ASP.NET MVC3中使用ajax更改ViewBag,ajax,asp.net-mvc,exchange-server,viewbag,Ajax,Asp.net Mvc,Exchange Server,Viewbag,ViewBag、ViewData和TempData在我第一次调用视图时只调用一次 如果我不刷新页面,就永远不会更改 因为我想使用Ajax进行更改(每10秒,我称之为Ajax) 请参见下面的代码 ===========================在控制器中======================= public ActionResult OriginView() { ViewBag.IntData = 1; return View(); } pub

ViewBag、ViewData和TempData在我第一次调用视图时只调用一次

如果我不刷新页面,就永远不会更改

因为我想使用Ajax进行更改(每10秒,我称之为Ajax)

请参见下面的代码

===========================在控制器中=======================

 public ActionResult OriginView()
 {

      ViewBag.IntData = 1;

      return View();

 }


 public JsonResult ChangeViewBag(int CurrentInterval)
 {

      ViewBag.IntData = CurrentInterval;

      return Json(new{IntData=CurrentInterval},JsonRequestBehavior.AllowGet);

 }
 var CurrentInterval = 2

 $.getJSON('@Url.Action("ChangeViewBag","Controller")', {CurrentInterval:CurrentInterval},function(response){

    @*CurrentInterval++ every ten sec, I want to use CHANGED ViewBag here!*@

    alert(@ViewBag.IntData) @*but **Result is still 1**, unchanged!*@

    alert(response.IntData) @*ofcourse I can use it in this way. *@

    @* but I should use below ASP.NET CODE

    @{
       string TimeData = DateTime.Now.AddSeconds(**ViewBag.IntData**).ToString();
    }

    ***The position is impossible to javascript variable.*** right?*@
 });
=====================在OriginView.cshtml中=======================

 public ActionResult OriginView()
 {

      ViewBag.IntData = 1;

      return View();

 }


 public JsonResult ChangeViewBag(int CurrentInterval)
 {

      ViewBag.IntData = CurrentInterval;

      return Json(new{IntData=CurrentInterval},JsonRequestBehavior.AllowGet);

 }
 var CurrentInterval = 2

 $.getJSON('@Url.Action("ChangeViewBag","Controller")', {CurrentInterval:CurrentInterval},function(response){

    @*CurrentInterval++ every ten sec, I want to use CHANGED ViewBag here!*@

    alert(@ViewBag.IntData) @*but **Result is still 1**, unchanged!*@

    alert(response.IntData) @*ofcourse I can use it in this way. *@

    @* but I should use below ASP.NET CODE

    @{
       string TimeData = DateTime.Now.AddSeconds(**ViewBag.IntData**).ToString();
    }

    ***The position is impossible to javascript variable.*** right?*@
 });
.Net天才请!!!
如果不可能,有什么想法吗?

ViewData
/
ViewBag
(这是一个围绕
ViewData
的包装器)用于将控制器之间的数据传递到视图,并且在每个请求中都会创建这些数据,无论是AJAX还是普通的。它们不能帮助您保持状态:(

代码正按照您的要求执行。也许您可以花更多的时间讲述您想做什么?您似乎在javascript中非常依赖ViewBag,这就像期待一艘美国战舰参与我在堪萨斯州制作花生酱沙一样。明白了!感谢您的参与!!!a但是,你没有叙述。我很困惑。