在创建交互式表单或其他类型的网页时,knockoutjs 有几个选项。可以创建一个强类型视图并将模型从控制器传递给它。另一方面,可以很容易地从一个普通的旧 html 文档开始,并在初始加载后通过调用操作方法(JsonResult 或其他方式)使其自身初始化。
此外,当将页面作为 MVC 视图启动时,您可以使用 HtmlHelpers 以及普通的旧 html 标记来初始化视图。另一种选择是将模型状态作为 json 序列化为隐藏字段,并使用它来初始化视图。
根据我的经验,在第一次加载期间,当您让 ko 初始化视图时可能会有延迟。无论您是通过从序列化的隐藏字段传递 json 来构造视图模型,还是依靠它来调用各种服务来加载数据,页面“准备就绪”之前都有一段时间。这些延迟可以通过使用 HtmlHelpers 等初始化页面来避免,但这种初始化也会产生额外的成本(控制器中的额外初始化逻辑、视图中的默认内容等)。
哪种初始化页面的方式最 MVVM?在视图中使用 HtmlHelpers 或根本使用 cshtml 是一个坏主意吗?如果没有,你在哪里画出视图和视图模型之间的界限?