1

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);

 }

================= OriginView.cshtml内... =======================

 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?*@
 });

.ネットの天才ください!!! それが不可能なら、何かアイデアはありますか?

4

1 に答える 1

2

ViewData/ ViewBag(これはラッパーですViewData) は、コントローラー間でデータをビューに渡すために使用され、AJAX であるか通常であるかにかかわらず、すべての要求で再作成されます。それらは状態を維持するのに役立ちません:(

于 2012-10-27T03:39:22.367 に答える