Я пытаюсь сделать значения из базы данных в выпадающем списке. Я успешно отобразил данные, используя таблицу, но когда я добавил раскрывающийся список (<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);
}
Какое значение '$ .parseJSON ('@ Html.Raw (Model. controlTypeJsonData) ') 'и один до него? И где код для выпадающего списка? – FakeRainBrigand
@FakeRainBrigand: вот код для раскрывающегося списка '' – Allen
@FakeRainBrigand @Html. Raw (Model.controlTypeJsonData) возвращает
'[{« ControlTypeId »: 1,« ControlType »:« Textbox »}, {« ControlTypeId »: 2,« ControlType »:« CheckBox »}, {« ControlTypeId »: 3, ControlType ":" RadioButton (Yes/No) "}, {" ControlTypeId ": 4," ControlType ":" DropDownList "}]', когда я показываю $ .parseJSON ('@ Html.Raw (Model.controlTypeJsonData)') в окно сообщения (предупреждение) возвращает [object Object], [object Object], [object Object] – Allen