ViewBag, ViewData, TempData są wywoływane tylko raz przy pierwszym wywołaniu widoku?
I nigdy nie zmieniaj, jeśli nie odświeżę strony?
Ponieważ chcę zmienić za pomocą Ajax (co 10 sekund nazywam Ajax)
Plz Zobacz poniższy kod,
==================== w kontrolerze ... =======================
public ActionResult OriginView()
{
ViewBag.IntData = 1;
return View();
}
public JsonResult ChangeViewBag(int CurrentInterval)
{
ViewBag.IntData = CurrentInterval;
return Json(new{IntData=CurrentInterval},JsonRequestBehavior.AllowGet);
}
================= w 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?*@
});
Geniusz .Net proszę !!! Jeśli to niemożliwe, jakiś pomysł?
Odpowiedzi:
2 dla odpowiedzi № 1ViewData
/ ViewBag
(jest to opakowanie dookoła ViewData
) służą do przekazywania danych między kontrolerem do widoku i są one tworzone ponownie przy każdym żądaniu, niezależnie od tego, czy jest to AJAX, czy normalne. Nie pomagają ci utrzymać stanu :(