【发布时间】:2014-04-04 04:20:27
【问题描述】:
我刚刚尝试了KnockoutMvc,虽然我很欣赏创作者的努力,但我发现它有点过于笨拙,一般来说没有用。不过,我喜欢尽量减少 Razor 视图中 JavaScript 的数量,尤其是样板 JavaScript(比如将我的服务器端视图模型绑定到客户端视图模型)。
是否有任何库允许您使用如下语法:
<span data-bind="@Html.DataBindFor(m => m.MyProperty)"></span>
或者,如果我要尝试编写自己的,大约需要哪些(非常通用的)组件才能使库有用?我假设我至少需要:
- 一组自定义属性,用于定义每个模型/属性/方法的绑定方式
- 在 Razor 视图中使用的一种扩展方法,用于使用反射找出属性值
- 一种用于 Razor 的扩展方法,用于生成(最小?)JavaScript 以将客户端视图模型绑定到 Razor 模型,并在必要时调用服务器
最后,假设这个库不存在,它不存在有充分的理由吗? IE 有没有办法真正解决这个问题,比如帮助方法,嗯,有帮助?
我问的原因是因为库 Lib.Web.Mvc.JqGrid 帮助我使用绝对最少的 JavaScript 非常快速地创建了交互式表格(刚好足以格式化列等),我想知道为什么 knockout.js 不存在相同的表格.
【问题讨论】:
-
您熟悉ko.mapping 插件吗?它可以帮助您摆脱手动将服务器端模型转换为客户端视图模型的麻烦。
-
它包含在我的视图中,但我没有使用它 - 我会使用
Html.Raw(Json.Encode(Model))序列化ViewModel吗?如果是这样,我想唯一要编写的 JavaScript 将是回调服务器的方法...... -
我在回答中详细说明了一点。
标签: javascript asp.net-mvc asp.net-mvc-4 razor knockout.js