淘汰赛js,mvc下拉默认值没有选择

时间:2014-06-10 16:32:02

标签: c# javascript jquery json knockout.js

看起来很简单,但我无法做到。

我使用c#中的Json数据限制了一个下拉列表。

查看页面

<div class="col-md-6">
    <select data-bind="options: VehicleTypes, optionsText: 'Name', optionsValue:'ID', optionsCaption: 'All', value: VehicleTypeId" class="form-control"></select>
</div>

Json致电

淘汰模型

var baseModel = {
    VehicleTypeId: null,
    VehicleTypes: [],
}

 var viewModel =  ko.mapping.fromJS(baseModel);

 $.get(urlPath + "/GetVehicleTypes", function (data) {     
      viewModel.VehicleTypes(data);
 });

它确实填满了下拉列表,当我在下拉值中选择一个值时,会更新为VehicleTypeId。

我的问题是我想为我的下拉列表设置一个默认值,我已经用谷歌搜索了它,但没有什么是适合我的

我回到Json的数据如下。

[{
    "ID": 32,
    "Name": "Vehicle 1"
}, {
    "ID": 30,
    "Name": "Vehicle 2"
}, {
    "ID": 31,
    "Name": "Vehicle 3"
}]

2 个答案:

答案 0 :(得分:0)

您的VehicleTypes需要在observableArray中,并确保您应用绑定:

var baseModel = {
                // data
                VehicleTypeId: ko.observable(null),
                VehicleTypes: ko.observableArray([{
                    "ID": 32,
                    "Name": "Vehicle 1"
                }, {
                    "ID": 30,
                    "Name": "Vehicle 2"
                }, {
                    "ID": 31,
                    "Name": "Vehicle 3"
                }]),
            }

            ko.applyBindings(baseModel);

答案 1 :(得分:0)

您必须为VehicleTypeId指定一个值,以便设置默认值。

Here是一个有效的例子。

function VehicleTypesViewModel(){
    var self = this;
  self.VehicleTypeId = null;
  self.VehicleTypes = [];   
}    
var viewModel =  new VehicleTypesViewModel();

$.get(urlPath + "/GetVehicleTypes", function (data) {     
  viewModel.VehicleTypeId = 32;
  viewModel.VehicleTypes = data;
  ko.applyBindings(viewModel);
});