首页 > 解决方案 > Knockout.js 中的数据绑定

问题描述

我的 MVC 应用程序中几乎没有控件与 knockout.js 示例绑定

<div class="checkbox">
<input class="styled" type="checkbox" data-bind="value: id(), checked: userProfileViewModel.preferredService, click: userProfileViewModel.toggleAssociation,attr:{id:Name(),name:Name()}">
<label data-bind="text: Name(),attr: { for:  Name()}"></label>
</div>

这里的绑定是通过以下方式完成的

data-bind="value: id()

我的应用程序支持多种语言,我在剃刀语法中转换

<h3 class="title">@OtherLang("Some text to convert", language)</h3>

此方法 OtherLang("text", language) 可以直接在文本上使用,如上所示或在 html 属性中,如下所示

<input type="text" value="@OtherLang(id(), language)" />

但是在淘汰方式 data-bind="value: id() ,这个c#方法不能在这里使用。

有人可以建议一种替代方法来调整 knockout.js 实现中的 Otherlang() 以使其在这里工作吗?

标签: asp.net-mvcrazorknockout.js

解决方案


既然您通过 javascript 使用 razor c#,您不是只是在这里混淆了一些语法吗?

这个想法是当服务器解析你的剃刀时你有一个字符串。因此,当您到达客户端的浏览器时,您正在为通过 data-bind 'value' 属性设置的值对象分配一个字符串。

<input type="text" data-bind="value: '@OtherLang(id(), language)'" />

推荐阅读