加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:23:14 所属栏目:asp.Net 来源:网络整理
导读:我发现很奇怪,我无法找到有关如何动态填充Knockout视图模型的任何信息.我猜我的搜索字词是不正确的. 无论如何,因为我正在使用Asp.Net MVC 3并且我第一次使用基于一个特定页面的淘汰赛,我希望我能以某种方式使用Razor模型插入淘汰赛. @Html.TextBoxFor(m = m.
我发现很奇怪,我无法找到有关如何动态填充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上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读