나는이 게시물을 여기에 따라 갔다 POST a complex viewmodel to a controller하지만 약간 도움이되지 않았다.컨트롤러에 복잡한 KO ViewModel을 반환
{
"selectedCatalog": 7,
"catalogs": [
{
"name": "EDI Outbound",
"catalogId": 7,
"enabled": true,
"aggregate": true
},
{
"name": "CSV Aggregate Outbound",
"catalogId": 8,
"enabled": true,
"aggregate": true
},
{
"name": "CSV Non-Aggregate Outbound",
"catalogId": 9,
"enabled": true,
"aggregate": false
}
],
"catalogConfiguration": [
{
"pdbColumnName": "Active",
"outboundColumnName": "Active",
"pdbColumnId": 2,
"selectedColumn": 2
},
{
"pdbColumnName": "Category",
"outboundColumnName": "Category",
"pdbColumnId": 3,
"selectedColumn": 3
},
{
"pdbColumnName": "Inventory",
"outboundColumnName": "Inventory",
"pdbColumnId": 4,
"selectedColumn": 4
},
{
"pdbColumnName": "Manufacturer",
"outboundColumnName": "Manufacturer",
"pdbColumnId": 5,
"selectedColumn": 5
},
{
"pdbColumnName": "ManufacturerSKU",
"outboundColumnName": "ManufacturerSKU",
"pdbColumnId": 6,
"selectedColumn": 6
},
{
"pdbColumnName": "MSRP",
"outboundColumnName": "MSRP",
"pdbColumnId": 7,
"selectedColumn": 7
},
{
"pdbColumnName": "Name",
"outboundColumnName": "Name",
"pdbColumnId": 8,
"selectedColumn": 8
},
{
"pdbColumnName": "Price",
"outboundColumnName": "Price",
"pdbColumnId": 9,
"selectedColumn": 9
},
{
"pdbColumnName": "SKU",
"outboundColumnName": "SKU",
"pdbColumnId": 10,
"selectedColumn": 10
},
{
"pdbColumnName": "UPC",
"outboundColumnName": "UPC",
"pdbColumnId": 11,
"selectedColumn": 11
},
{
"pdbColumnName": "Weight",
"outboundColumnName": "Weight",
"pdbColumnId": 12,
"selectedColumn": 12
}
]
}
내가 작업 할 내 컨트롤러에이 활용하는 방법을 잘 모르겠어요 :
은 내가 페이지에 JSON으로 모델을 덤프하는 경우는 다음과 같습니다하는 뷰 모델이있다. 내가 다시 게시 할 수 있어요하지만 문자열은 다음에서 널 : 컨트롤러
[HttpPost]
public void UpdateCatalog(string data)
{
var heh = data;
}
보기
function CatalogConfigurationModel(data) {
var self = this;
self.pdbColumnName = ko.observable(data.PDBColumnName);
self.outboundColumnName = ko.observable(data.OutboundColumnName);
self.pdbColumnId = ko.observable(data.PDBColumnId);
self.selectedColumn = ko.observable(data.ConfiguredColumnId);
}
function CatalogList(data) {
var self = this;
self.name = ko.observable(data.Name);
self.catalogId = ko.observable(data.Id);
self.enabled = ko.observable(data.Enabled);
self.aggregate = ko.observable(data.Aggregate);
}
var ViewModel = function() {
var self = this;
self.submitChanges = function() {
var data = ko.toJS(ViewModel);
$.post('/PDBConfig/UpdateCatalog/',
data,
function(status) {
alert(status);
});
};
//self.catalogs = ko.observableArray([
//new CatalogList('EDI Outbound', 2, 1),
//new CatalogList('CSV Outbound', 1, 1)
//]);
self.selectedCatalog = ko.observable();
self.catalogs = ko.observableArray([]);
self.catalogConfiguration = ko.observableArray([]);
$.getJSON(
"/PDBConfig/GetCatalogList/",
function (data) {
var mappedTasks = $.map(data, function (item) { return new CatalogList(item) });
self.catalogs(mappedTasks);
self.selectedCatalog(self.catalogs[1]);
$.getJSON(
"/PDBConfig/GetCatalogConfig/",
{ id: data[0].Id },
function (catalogData) {
var mappedCatalog = $.map(catalogData, function (item) { return new CatalogConfigurationModel(item) });
self.catalogConfiguration(mappedCatalog);
});
});
};
$(document).ready(function() {
var model = new ViewModel();
model.selectedCatalog.subscribe(function (newValue) {
$.getJSON(
"/PDBConfig/GetCatalogConfig/",
{ id: newValue },
function (catalogData) {
var mappedCatalog = $.map(catalogData, function (item) { return new CatalogConfigurationModel(item) });
model.catalogConfiguration(mappedCatalog);
});
});
ko.applyBindings(model);
내가 매핑에 시작하는 곳 그래서 질문은 C#에서이 다시 내가 만들 마십시오 내 JSON 문자열에있는 것과 동일한 명명 규칙을 가진 모델?
추가 참조에 대한 내 생각의 나머지 :이 라이브러리의 구현에 대한 질문이 있으면
의 SO 그룹을 방문하십시오. 내 배열 내의 값을 C# 모델에 넣을 명명 규칙과 일치시킬 필요가 있는지 확실하지 않습니다. –