2015-06-20 71 views
0

我有一個視圖,其中包含一些javascript。當我需要的數據準備就緒時(來自indexeddb),javascript會調用一個回調函數。ASP.NET MVC在部分視圖中使用javascript值

這個數據,我想傳遞給一個局部視圖 - 我該怎麼做?我似乎無法使用ViewData,因爲一旦頁面呈現就會過期(因此,在收到回調之前)。有任何想法嗎?代碼在這裏:

<div> 
    <script type="text/javascript"> 
     var somecallback = myFunctionDefinedSomewhere(); 
     somecallback.onsuccess = function(evt) { 
      console.log("Success!"); 

      var iReallyNeedThisVariable = evt.id; 
      @ViewData["iReallyNeedThisVariable"] = iReallyNeedThisVariable; 
     } 
    </script> 

    @for (int i = 0; i < Model.MyCollection.Count; i++) 
    { 
     if (i == 0) 
     { 
      @Html.Partial("_MyPartialView", Model.MyCollection.ElementAt(i), new ViewDataDictionary { { "Stuff", true }, { "iReallyNeedThisVariable", @ViewData["iReallyNeedThisVariable"] } }); 
     } 
     else 
     { 
      @Html.Partial("_MyPartialView", Model.MyCollection.ElementAt(i), new ViewDataDictionary { { "Stuff", false }, { "iReallyNeedThisVariable", @ViewData["iReallyNeedThisVariable"] } }); 
     } 
    } 
</div> 
+4

您正在使用JavaScript混合使用服務器端代碼。你不能從JavaScript設置'ViewBag'。相反,您需要對「Controller Action」進行「AJAX POST/GET」調用,然後獲得「PartialView或JSON數據」並在您的主視圖中使用它。 – ramiramilu

+0

我試圖避免任何服務器端代碼 - 即時消息使用服務工作者在離線時使站點工作 – user1202032

+1

不幸的是,您不能這樣做 –

回答

2

您正在使用JavaScript混合服務器端代碼。您不能從JavaScript設置ViewBag

相反,你需要做一個AJAX POST/GET調用控制器動作(或到Service Workers),然後在響應要麼得到PartialViewJSON Data並在主視圖中使用它。

UPDATE: OP證實,AJAX調用由服務人員的獲取事件的支持。