ASP.NET MVC在部分视图中使用javascript值

ASP.NET MVC在部分视图中使用javascript值,javascript,asp.net,asp.net-mvc,razor,indexeddb,Javascript,Asp.net,Asp.net Mvc,Razor,Indexeddb,我有一个包含一些javascript的视图。javascript有一个回调函数,当我需要的数据准备好时(从indexeddb)调用该函数 这些数据,我想传递给一个局部视图-我该怎么做?我似乎不能使用ViewData,因为它会在页面呈现时过期(因此,在收到回调之前)。有什么想法吗?代码如下: <div> <script type="text/javascript"> var somecallback = myFunctionDefinedSomewh

我有一个包含一些javascript的视图。javascript有一个回调函数,当我需要的数据准备好时(从indexeddb)调用该函数

这些数据,我想传递给一个局部视图-我该怎么做?我似乎不能使用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>

var somecallback=myFunctionDefinedSomewhere();
somecallback.onsuccess=函数(evt){
console.log(“成功!”);
var iReallyNeedThisVariable=evt.id;
@ViewData[“iReallyNeedThisVariable”]=iReallyNeedThisVariable;
}
@对于(int i=0;i
您正在将服务器端代码与JavaScript混合使用。无法从JavaScript设置
ViewBag

相反,您需要对控制器操作(或服务人员)进行
ajaxpost/GET
调用,然后作为响应,获取
PartialView
JSON数据
,并在主视图中使用它

更新:
OP确认服务人员的获取事件支持AJAX调用。

您正在将服务器端代码与JavaScript混合。无法从JavaScript设置
ViewBag
。相反,您需要对
控制器操作进行
ajaxpost/GET
调用,然后作为响应,获取
PartialView或JSON数据
,并在主视图中使用它。我正在尝试避免任何服务器端代码-我使用serviceworkers在脱机时使站点工作不幸的是,您无法做到这一点。我不确定避免服务器端代码并在脱机时工作是什么意思。你能详细描述一下你的问题吗?因为即使您希望动态呈现partialview,也应该存在服务器命中。ServiceWorkers可以缓存任何“正常”http请求,并在浏览器脱机时将其提供给浏览器。它并不以同样的方式支持AJAX。此外,这完全是客户端的。我打开客户端indexeddb,并在客户端呈现页面。我只想延迟部分视图的渲染,直到我有一个到indexeddb的开放连接