我试图让我的JSON字符串通过ViewBag传入我的挖空观察器并使用它填充多选列表。我不确定我在做什么错误,但是现在它将JSON字符串中的每个单独字符都粘贴到选择列表中的它自己的行中。将JSON字符串放入Knockout可观察多选列表
这里是我的C#控制器代码:
Dictionary<string, string> salesReps = new Dictionary<string, string>();
foreach (var rep in salespeople.Salesperson)
{
salesReps.Add(rep.Code, rep.Code + " - " + rep.fullName);
}
//ViewBag.salespeople = salespeople.Salesperson.Select(x => x.Code).Distinct().ToList();
ViewBag.salespeople = JsonConvert.SerializeObject(salesReps);
这里是淘汰赛代码:
var cSource = function (data) {
var self = this;
.....
self.salesPeople = ko.observableArray();
};
$(document).ready(function() {
var modelData = @Html.Raw(Json.Encode(Model));
mySource = new cSource(modelData);
//var salesRepList = Html.Raw(Json.Encode(ViewBag.salespeople));
var salesRepList = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewBag.salespeople));
console.log(salesRepList);
mySource.salesPeople = salesRepList;
这里是HTML选择代码:
<select data-bind="
options: salesPeople,
selectedOptions: chosenReps,
optionsCaption: 'Choose rep(s)'
"></select>
和一个小我的console.log吐出的片段:
{"USERNAME1":"USERNAME1 - Full Name 1","USERNAME2":"USERNAME2 - Full Name 2","USERNAME3":"USERNAME3 - Full Name 3",..... }
UPDATE
我改变了C#代码在JSON立即创建命名变量。这是我的新的console.log输出:
{"username":"BOBC","fullname":"Bob Cottin"},{"username":"JIMT","fullname":"Jim Thorpe"},{"username":"LUKEP","fullname":"Luke Peppin"}, ....}
有一件事我立刻注意到的是,你似乎可以覆盖你的销售人员观察到与一个平坦的价值。 “mySource.salesPeople = salesRepList”应该可能是“mySource.salesPeople(salesRepList)” –