繁体   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