【发布时间】:2017-10-23 18:58:45
【问题描述】:
我有一个基于 Knockoutjs example 的可编辑表格。我一直在尝试从对 ASP MVC 控制器的 AJAX 调用填充多选下拉列表。我查看了 this 示例、one 和 one 示例,但仍然无法使其正常工作。
这是html:
<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>
这是淘汰赛部分的 javascript:
var UserModel = function (users) {
var self = this;
self.users = ko.observableArray(users);
//add user
self.addUser = function () {
self.users.push({
id: "",
firstName: "",
lastName: "",
MAMUserGroupsListOptions: "",
MAMUserGroups: ""
});
};
//remove user
self.removeUser = function (user) {
self.users.remove(user);
};
var viewModel = new UserModel([
{
id: ko.observable(""), firstName: ko.observable(""), lastName: ko.observable(""),
MAMUserGroupsListOptions: ko.observable(),//this is where I need to populate
MAMSelectedGroups: ko.observable(),//this is the result of the multiselect
}
]);
ko.applyBindings(viewModel);
这是控制器:
[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 等。
我一直在努力解决这个问题 - 任何帮助都将不胜感激。
【问题讨论】:
-
它返回一个对象数组?
-
抱歉,我对 Javascript 有点陌生。当我将它写入控制台时,它在技术上看起来像: [Object, Object, Object, Object, Object] 0 : Object MAMUserGroupName : "MAMGroup1"
标签: ajax asp.net-mvc knockout.js