当前位置 : 主页 > 网络编程 > ASP >

asp.net-mvc-3 – 使用razor设置knockout viewmodel的初始值

来源:互联网 收集:自由互联 发布时间:2021-06-24
我发现很奇怪,我无法找到有关如何动态填充Knockout视图模型的任何信息.我猜我的搜索字词是不正确的. 无论如何,因为我正在使用Asp.Net MVC 3并且我第一次使用基于一个特定页面的淘汰赛
我发现很奇怪,我无法找到有关如何动态填充Knockout视图模型的任何信息.我猜我的搜索字词是不正确的.

无论如何,因为我正在使用Asp.Net MVC 3并且我第一次使用基于一个特定页面的淘汰赛,我希望我能以某种方式使用Razor模型插入淘汰赛.

@Html.TextBoxFor(m => m.PropertyName, new { data_bind = "value: name" })

我认为这不起作用,因为即使剃刀使用PropertyName填充字段,它也会在绑定之前发生,因此它不会强制它对knockout viewmodel的值.

var viewModel = {
        name: ko.observable(@GetPoertyNameUsingRazorSomehow)
    };

这也不起作用,至少我不明白.

由于我们可以通过MVC 3轻松获取RazorModel数据,因此我确信我们可以将它注入到Knockout viewModel中.我还没有看到任何解释如何的教程.我错过了什么?

我在Json.NET上创建了一个小型库,用于这样的场合:

https://github.com/paultyng/FluentJson.NET

你可以像这样在Razor视图中创建JSON(注意Knockout扩展方法):

@JsonObject.Create()
    .AddProperty("name", "value")
    .AddProperty("childObject", c => {
        .AddProperty("childProperty", "value2")
    })
    .AddObservable("knockoutProperty", 123)

这将产生类似于此的JSON:

{"name":"value","childObject":{"childProperty":"value2"},"knockoutProperty":ko.observable(123)}

Knockout方法通过扩展方法添加,其他东西也可以轻松扩展.

如果您需要,该套餐在Nu-Get上.

网友评论