簡體   English   中英

通過Knockout使用MVVM的asp.net MVC,將模型傳遞給j​​avascript

[英]asp.net MVC with MVVM via Knockout, pass model to javascript

我正在寫一個MVC應用程序,我已經決定Knockout.js將幫助解決我的很多問題,除了在這個過程中,它已經創建了一個我正在解決問題的新問題。

我將所有MVC端點轉換為僅返回視圖,然后我創建了幾個返回JSON對象的端點。 當用戶瀏覽網站時,該網站會加載基本UI框架。 之后,Knockout.js通過AJAX調用加載模型。 這導致每個頁面都被加載,然后再次“加載”,就像加載頁面的MVC和所有數據一樣。

我一直在研究如何同時加載兩者,但我沒有找到任何不需要我完全重構網站的東西。 最好的選擇是:

  • 將JSON端點合並到視圖端點,並使用@Html.Raw(Json.Encode(object))將模型轉換為代碼隱藏中的JSON

但是我必須得到所有純JSON端點。

我還能做些什么來將JSON端點數據傳遞到服務器端的視圖嗎? 或者以任何方式同時加載模型和視圖?

您的體系結構是正確的,但您希望初始加載使用模型中的數據預先填充視圖。 在剛剛返回視圖的控制器操作中,您應該將數據放入ViewData中。 然后,視圖最初使用Model值加載,並且每個UI元素都可以具有AJAX更新,該更新調用該特定字段的Controller操作。

這也是ViewModel理想情況 這可能有助於以及

我也同意讓初始視圖生成將初始數據直接渲染到視圖中是個好主意。 通常,這會產生比單獨的AJAX調用+之后填充數據的JavaScript更好的性能。

但我也認為這取決於您正在加載的頁面類型。 如果您的應用程序主要是基於AJAX(SPA樣式模型),那么第一次加載可能不是那么重要,因為它只發生一次,並且可能需要花費額外的時間。 通過AJAX或傳統的View操作以一種方式加載所有數據會更容易一些。 當您的客戶端代碼要求您重新加載列表或記錄的整個數據集時,您最終不會復制模板/視圖邏輯以生成該輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM