2017-01-02 40 views
0

我使用的是以下行的我所有的觀點開始:如何使用視圖模型爲我的所有視圖編寫一行?

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

我做的,爲了從我的JavaScript框架管理視圖模型,但我更願意集中該行以某種方式而不是寫它的在我所有的觀點中,我不確定我是否可以在視圖佈局中做到這一點,因爲Razor在那時不知道視圖模型類型。

我怎麼能把這一行放在一個地方爲我所有的意見?

回答

1

當剃刀執行佈局代碼時,ViewData字典(和頁面模型)可用。所以你可以在佈局上做到這一點。

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

不應該在'if'正文中使用'ViewBag.MyViewModel'嗎? –

+0

@PeterB實際模型可用於佈局!所以我們並不需要從視圖包中設置和閱讀。 (這就是爲什麼它與我發佈的代碼一起工作) – Shyju

相關問題