0

我在 MVC 4 中使用 Knockout。我的 cshtml 是:

...
<span>@Html.RadioButtonFor(m => m.isActive, true, new { @class = "statusRadioButton", data_bind = "checked: isActive" })</span>
<span>@Html.RadioButtonFor(m => m.isActive, false, new { @class = "statusRadioButton", data_bind = "checked: isActive" })</span>
...

我的柯:

...
self.isActive = ko.observable(product.isActive);
...

会正确更新数据库,但在加载页面时它不会显示任何已选中的单选按钮。我也尝试使用 checked = "checked" html 属性,但它也不起作用。有什么建议吗?

4

1 回答 1

1

您的 product.isActive 是可观察的吗?如果是这样,那么您将需要执行可观察的product.isActive()

通过像您一样进行初始化,self.isActive = ko.observable(product.isActive());您只会设置一次。

尝试将其变为可观察的,例如:

self.isActive = ko.computed(function() {
                                return product.isActive();
                             });

编辑:尝试将您的单选按钮更改为:

<span>@Html.RadioButtonFor(m => m.isActive, true, new { @class = "statusRadioButton", data_bind = "checked: isActive", value="true" })</span>
<span>@Html.RadioButtonFor(m => m.isActive, false, new { @class = "statusRadioButton", data_bind = "checked: isActive", value="false" })</span>

并编写您的 observable 以使用 isActive 中的布尔值作为字符串。

self.isActive = ko.computed(function() {
                                return product.isActive.toString();
                             });
于 2013-05-02T14:19:37.307 回答