淘汰数据绑定问题

本文关键字:问题 数据绑定 淘汰 | 更新日期: 2023-09-27 18:23:56

我有一个带有数据绑定的dropdownlist;

<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());​

其中"MoveType"是0或1。这似乎很有效,但只是部分有效。一切都很好,只有当"MoveType"=1时,才能正确选择下拉列表中的值。如果MoveType=0,它不想选择"Car",而是选择值为"--Please select--"的选项。

问题很简单,为什么?我错过了什么?我听不懂。

淘汰数据绑定问题

您确定控制台中没有出现任何错误吗?

我把你的代码改成了:

var MoveType=1;
var ViewModel = function() {
    this.moveType = ko.observable(MoveType);       
};    
ko.applyBindings(new ViewModel()); // This makes Knockout get to work

现在它似乎起了作用:你可以在这里测试

"car"在下拉列表中的值为0(查看您的Value属性)。这就是0导致选择"car"的原因。如果要选择"--请选择--",则需要将该值设置为空字符串""

这反过来意味着您的javascript moveType以及C#MoveType必须是字符串而不是数字,因为"不是有效的数字。

为了防止这种情况发生,我建议您对选项进行不同的编号:使用Value="1"表示汽车,使用Value="2"表示空气。然后您的"请选择"选项得到Value="0"