2013-05-20 2 views
3

Я пытаюсь сделать значения из базы данных в выпадающем списке. Я успешно отобразил данные, используя таблицу, но когда я добавил раскрывающийся список (<select>), он останавливается там. Я не могу понять проблему.Раскрывающийся список в KnockoutJS не является обязательным

<table> 
    <thead><tr> 
    <th>Choice Text</th> 
    <th>Zero Tolerance Message</th> 
    <th>Has SubChoice</th> 
    </tr></thead> 
    <tbody data-bind="foreach: choice"> 
    <tr> 
    <td> 
     <label data-bind="text: ChoiceText,visible:IsUsed"></label> 
     <input type="text" data-bind="value: ChoiceText, visible: !IsUsed()" > 
    </td> 
    <td> 
     <label data-bind="text: ZeroToleranceMessage, visible: IsUsed"></label> 
     <input type="text" data-bind="value: ZeroToleranceMessage, visible: !IsUsed()" /> 
    </td> 
    <td> 
     <label data-bind="text: HasSubChoice, visible: IsUsed"></label> 
     <input type="text" data-bind="value: ZeroToleranceMessage, visible: !IsUsed()" /> 
     <select data-bind="options: controlType, optionsText: 'ControlType', optionsCaption: 'CT', optionsValue: 'ControlTypeId'"/> 
    </td> 
    </tr> 
    </tbody> 
</table> 

Ниже, что эти сценарии:

<script src="~/Content/Scripts/jquery-1.9.1.js"></script> 
<script src="~/Content/Scripts/jquery-1.9.1.min.js"></script> 
<script src="~/Content/Scripts/knockout.js"></script> 
<script src="~/Content/Scripts/knockout.mapping-latest.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 

     $(function() { 

      $('th > :checkbox').click(function() { 
       $(this).closest('table') 
        .find('td > :checkbox') 
        .attr('checked', $(this).is(' :checked')); 
      }); 
     }); 

     var viewModelChoiceJSON = ko.mapping.fromJS($.parseJSON('@Html.Raw(Model.choiceJsonData)')); 
     var viewModelControlTypeJSON = ko.mapping.fromJS($.parseJSON('@Html.Raw(Model.controlTypeJsonData)')); 
     //Html.Raw(jsonData) 
     ko.applyBindings({ choice: viewModelChoiceJSON }); 
     ko.applyBindings({ controlType: viewModelControlTypeJSON }); 
    }); 

</script> 

Контроллер:

public ActionResult ChoiceList(int? questionId) 
{ 
    _ValidationService = DiFactory.Resolve<IValidationService>(); 
    _ChoiceService = DiFactory.Resolve<IChoiceService>(); 
    ChoiceViewModel viewModel = new ChoiceViewModel(_ChoiceService.GetChoice(questionId)); 
    viewModel.choiceJsonData = JsonConvert.SerializeObject(_ChoiceService.GetChoice(questionId)); 
    viewModel.controlTypeJsonData = JsonConvert.SerializeObject(_ValidationService.GetControlType()); 
    // viewModel.ControlTypeSource = Utility.ControlTypeSource(); 
    return PartialView("~/Areas/Validation/Views/Choice/ChoiceGrid.cshtml", viewModel); 
} 
+0

Какое значение '$ .parseJSON ('@ Html.Raw (Model. controlTypeJsonData) ') 'и один до него? И где код для выпадающего списка? – FakeRainBrigand

+0

@FakeRainBrigand: вот код для раскрывающегося списка '