2015-06-20 55 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调用由服务人员的获取事件的支持。