2014-09-23 6 views
0

У меня есть раскрывающийся список с привязкой данных;Ошибка передачи данных для нокаута

<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, он не хочет выбирать «Автомобиль», и вместо этого выбранный вариант будет «- Please Select -» со значением "".

Вопрос прост, почему? Что мне не хватает? Я не могу этого понять.

+0

Да? Что вы ожидаете от наблюдаемого «MoveType», если пользователь выбирает «автомобиль» в какой-то момент? – Jeroen

+1

Можете ли вы объяснить это более ясно .. либо я не могу понять, либо это кажется двусмысленным. –

+0

Создать новую [скрипку] (http://jsfiddle.net/) – Fabio

ответ

0

Вы уверены, что у вас не возникнут какие-либо ошибки в консоли?

Я изменил свой код в:

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

и теперь его, кажется, работает: вы можете проверить его Here

+0

Да, я уверен. Но спасибо за ваш пример. Я исправил applyBindings в моем вопросе. Не заметил, что я поставил ViewModel в вопрос без «нового». –

0

«автомобиль» имеет значение 0 в вашем раскрывающемся списке (смотрите на ваши атрибуты Value). Вот почему 0 заставляет выбрать «автомобиль». Если вы хотите выбрать «- Please Select -», вам нужно установить значение в пустую строку "".

Это, в свою очередь, подразумевает, что ваш javascript moveType и, следовательно, ваш C# MoveType должен быть строкой, а не числом, так как «" не является допустимым числом.

Чтобы предотвратить это, я предлагаю вам указать свои варианты по-разному: используйте Value="1" для автомобиля и Value="2" для воздуха. Затем ваш вариант «выберите» выбирается Value="0".

+0

Спасибо за ответ, но вы прочитали вопрос? Проблема заключается в том, что вместо «0» выбрано значение «» (когда MoveType равно 0). –

+0

@Olegs - Я прочитал вопрос, но это было недостаточно ясно. Но вы прочитали мой ответ? Я имею в виду, пункты 2 и 3? – chiccodoro

Смежные вопросы