我使用内部类具有以下KnockoutJS映射:
public class Retailer
{
public int RetailerId { get; set; }
public string DemoNumber { get; set; }
public string OutletName { get; set; }
public string OwnerName { get; set; }
public Address Address { get; set; }
public Logging Logging { get; set; }
}
public class Address
{
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zipcode { get; set; }
public string Mobile { get; set; }
public string LandLine { get; set; }
public string Email { get; set; }
}
以上显示了我的模型,我正在使用KnockoutJS构建我的网站。
我可以使用ko.mapping
插件绑定控件。但是,当我尝试插入零售商的值时,内部类Address
返回所有属性的null
值。
当我测试客户端时,它会显示整个模型值。
IdeaSales.NewRetailer = function () {
$.ajax({
url: '/Retailer/Retailer',
dataType: 'json',
cache: false,
type: "post",
success: function (data) {
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
},
error: function (request, status, error) {
alert(request.responseText);
}
});
}
IdeaSales.InsertRetailer = function () {
var newModel = ko.toJS(viewModel);
$.ajax({
url: '/Retailer/InsertRetailer',
data:viewModel,
cache: false,
type: "post",
success: function (data) {
},
error: function (request, status, error) {
alert(request.responseText);
}
});
}
和
public int InsertRetailer(Retailer retailer)
{
return new RetailerAppService().InsertRetailer(retailer);
}
问题是我收到零售商信息,但是对于地址类我每个都得到Null
个值。
答案 0 :(得分:1)
当您将JSON发送到服务器时,您需要指定 内容类型。
此版本的InsertRetailer应该可以工作:
IdeaSales.InsertRetailer = function () {
var newModel = ko.toJS(viewModel);
$.ajax({
url: '/Retailer/InsertRetailer',
contentType: "application/json",
data: newModel,
cache: false,
type: "post",
success: function (data) {
},
error: function (request, status, error) {
alert(request.responseText);
}
});
}