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

ASP.NET MVC Use javascript value in partial view

我有一个视图,里面有一些 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>

您将服务器端代码与 JavaScript 混合在一起。您不能从 JavaScript 设置 ViewBag

相反,您需要 AJAX POST/GET 调用 Controller Action(或 Service Workers),然后作为响应获取 PartialViewJSON Data 并使用它在您的主视图中。

更新: OP 确认 AJAX Service Worker 的 Fetch 事件支持调用。