我有一个带有data-bind的下拉列表;
<asp:DropDownList ID="cmbType" Runat="server" AutoPostBack="False" data-bind="value: moveType">
<asp:ListItem Value="">-- Please Select --</asp:ListItem>
<asp:ListItem Value="0">Car</asp:ListItem>
<asp:ListItem Value="1">Air</asp:ListItem>
</asp:DropDownList>
我也有
var viewModel = {
this.moveType = ko.observable(MoveType);
};
ko.applyBindings(new ViewModel());
其中&#34; MoveType&#34;是0或1.这似乎工作正常,但只是部分。 一切都很好,只有当&#34; MoveType&#34;时才能正确选择下拉值。 = 1.如果MoveType = 0,它不想选择&#34; Car&#34;而选择的选项将是&#34; - 请选择 - &#34;有价值&#34;&#34;。
问题很简单,为什么?我错过了什么?我无法理解。
答案 0 :(得分:0)
您确定在控制台中没有收到任何错误吗?
我将您的代码更改为:
var MoveType=1;
var ViewModel = function() {
this.moveType = ko.observable(MoveType);
};
ko.applyBindings(new ViewModel()); // This makes Knockout get to work
现在它似乎工作: 你可以测试它Here
答案 1 :(得分:0)
“car”在您的下拉列表中的值为0
(查看您的Value
属性)。这就是0
导致“汽车”被选中的原因。如果要选择“ - 请选择 - ”,则需要将值设置为空字符串""
。
这反过来暗示您的javascript moveType
以及您的C#MoveType
必须是字符串而不是数字,因为“”不是有效数字。
为了防止这种情况,我建议您以不同方式为您的选项编号:使用Value="1"
代表汽车,Value="2"
代表航空。然后,您的“请选择”选项会获得Value="0"
。