如何使用他们的视图模型为我的所有视图写一行?

How can I write a line for all my views using their view model?

我在所有视图的开头使用以下行:

<script> var viewModel = @Html.Raw(JsonConvert.SerializeObject(Model)); </script>

我这样做是为了从我的 javascript 框架中管理视图模型,但我更喜欢以某种方式集中那条线而不是将它写在我所有的视图中,我不确定我是否可以做到在视图布局中,因为 Razor 不知道此时的视图模型类型。

我怎样才能将所有视图都放在一个地方?

ViewData 字典(和页面模型)在 razor 执行布局代码时可用。因此您可以在布局上执行此操作。

<script>
    var mySecretApp = mySecretApp || {};       
    @if (!ViewContext.IsChildAction)
    {
        @:mySecretApp.pageViewModel = @Html.Raw(JsonConvert.SerializeObject(Model));
    }
    console.log('viewmodel', mySecretApp.pageViewModel);
</script>