获取内部类属性的空值

时间:2013-05-26 10:01:18

标签: jquery asp.net-mvc knockout.js knockout-mapping-plugin

我使用内部类具有以下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个值。

1 个答案:

答案 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);
        }
    });
}