将可观察数组绑定到 C# 列表
Binding observableArray to C# list
我在 C# 中有以下简化的 ViewModel
public class SearchViewModel
{
public IList<IdAndNameModel> AvailableTags { get; set; }
public IList<IdAndNameModel> SearchTags { get; set; }
}
在 JavaScript 中:
function ViewModel() {
var self = this;
self.allTags = ko.observableArray();
self.searchTags = ko.observableArray();
// stuff to fill the searchTags
}
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
viewModel.allTags(@Html.Raw(Json.Encode(@Model.AvailableTags)));
现在我想将 JavaScript 属性绑定到SearchModel
:
@Html.HiddenFor(m => m.SearchTags, new { data_bind = "value: searchTags" })
以下是如何将数据提交到控制器的代码片段:
$('#submitButton').click(function () {
var form = $('#criteriaForm');
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(),
success: function (result) {
// unimportant binding stuff
}
});
});
不幸的是,列表的长度始终为 0。我敢打赌原因是 availabaleTags 数组 ( @Html.Raw(Json.Encode(@Model.AvailableTags))
) 的初始化。我说的对?如果我将类型从列表更改为字符串,那么我可以看到绑定通常有效。
有没有办法以这种方式绑定列表?
如果我是你,我会将$.ajax
调用更改为如下所示:
$.ajax(form.attr('action'), {
type: form.attr('method'),
data: JSON.stringify({
'AvailableTags': viewModel.allTags(),
'SearchTags': viewModel.searchTags()
}),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (response) {
//Do your thang
}
});
然后,您的控制器将有一个如下所示的方法:
public ActionResult Test(SearchViewModel searchViewModel) {
//Stuffy stuff, best stuff on earth
}
最后一个建议是将
viewModel.allTags(@Html.Raw(Json.Encode(@Model.AvailableTags)));
在
ko.applyBindings(viewModel);
如果您不想单独发送它们,您可能需要尝试以下方法。knockout 在 C# 列表中存在此问题,因此在与 C# 端交互时,您需要将其转换回来。
data: JSON.stringify(ko.mapping.toJS(yourobject))
相关文章:
- knockout.js中的绑定多下拉列表
- 如何绑定外键剑道ui下载列表(带角)
- 如何使用文本下拉列表中的绑定值来执行计算
- 如何删除WinJS组绑定列表的最后一项
- SAPUI5绑定问题:json文件中维护的列表项链接不起作用
- 将列表的css列计数属性相应地绑定到引导网格类
- 使用挖空将列表绑定到视图模型
- 剑道树列表绑定在行编辑时不会保留
- 使用下拉列表绑定数据
- Asp.net MVC4 下拉列表绑定到带有 JavaScript 的复选框
- KNOCKOUTJS 将项目列表绑定到下拉列表
- 如何在JSON模型中将Aggregate列表绑定到Object而不是数组
- 将下拉列表绑定到外部模态的敲除值
- 无序列表"绑定
- 如何将剑道UI列表绑定到ViewModel
- 如何使用带有单选按钮的AJX post方法将detailClass列表绑定到gridview
- 使用Javascript将java.util.List与下拉列表绑定
- 挖空.js - 嵌套数组数据和级联预填充下拉列表绑定
- 将剑道下拉列表绑定到RESTFUL web服务
- 将数组中的JSON列表绑定到ASP.. NET模型类