在淘汰赛中从Ajax填充多选列表
我有一个基于Knockoutjs的可编辑表。我一直在尝试从对ASP MVC控制器的AJAX调用填充一个多选下拉列表。我已经看了很多例子,这个,还有这个,但是我仍然有一些问题需要解决 以下是html:在淘汰赛中从Ajax填充多选列表,ajax,asp.net-mvc,knockout.js,Ajax,Asp.net Mvc,Knockout.js,我有一个基于Knockoutjs的可编辑表。我一直在尝试从对ASP MVC控制器的AJAX调用填充一个多选下拉列表。我已经看了很多例子,这个,还有这个,但是我仍然有一些问题需要解决 以下是html: <tbody data-bind='foreach: users' class="table-striped"> <tr> <td><input class='required numb
<tbody data-bind='foreach: users' class="table-striped">
<tr>
<td><input class='required number form-control' maxlength="9" stringlength="9" data-bind='value: id, uniqueName: true' /></td>
<td><input class='required form-control' data-bind='value: firstName' /></td>
<td><input class='required form-control' data-bind='value: lastName' /></td>
<td>
<select data-bind="options: MAMUserGroupsListOptions, selectedOptions: MAMSelectedGroup">
<!--dropdown list goes here-->
</select>
</td>
<td><a href='#' data-bind='click: $root.removeUser'>Delete</a></td>
</tr>
</tbody>
这是控制器:
[HttpGet]
public ActionResult MAMUserGroupsList()
{
var MAMUserGroupsListOptions = db.MAMUserGroupsListModels.Select(x => new {
MAMUserGroupName = x.MAMUserGroupName
}).ToList();
return Json(MAMUserGroupsListOptions, JsonRequestBehavior.AllowGet);
}
通过AJAX调用控制器时,返回的结果如下:
{MAMUserGroupName: "MAMGroup1"}, {MAMUserGroupName: "MAMGroup2"}, etc...
我正在尝试让多选下拉菜单显示“MAMGroup1”,MAMGroup2等等
在这件事上,我的头撞到了墙上,如果有任何帮助,我将不胜感激。看起来你只是想通过对象数组来提取感兴趣的一个值。如果从名为ajaxResult的变量中的结果开始
MAMUserGroupsListOptions(ajaxResult.map(obj => obj.MAMUserGroupName));
将值分配给可观察数组。或者,如果在创建viewmodel时该值可用
MAMUserGroupsListOptions: ko.observable(ajaxResult.map(obj => obj.MAMUserGroupName))
它返回一个对象数组?对不起,我对Javascript有点陌生。当我将其写入控制台时,从技术上讲,它看起来像:[Object,Object,Object,Object,Object]0:Object-MAMUserGroupName:“MAMGroup1”,除非我遗漏了您的意思,否则您是否省略了冒号?MamUserGroupsStopOptions:(ajaxResult.map(obj=>obj.MAMUserGroupName));不,您通过将其作为参数传递给可观察对象来为其赋值。我假设您在ajax结果可用之前创建了viewmodel。请参阅更新的答案。
MAMUserGroupsListOptions: ko.observable(ajaxResult.map(obj => obj.MAMUserGroupName))