Ajax调用控制器发送一个对象数组,控制器中的方法无法解析内容

时间:2013-10-09 22:01:41

标签: c# asp.net-mvc jquery razor

以下是我的部分视图 - 使用下面的ajax调用

调用控制器
$.ajax(url, {
            type: 'POST', 
            data: { Addresses: InboundAddresses },
            cache: false,
            crossDomain: true,
            success: function (data) {
                //Populate the form values
                // Start Dialog Code
                $myWindow = jQuery('#myDiv');
                //instantiate the dialog
                $myWindow.html(data);
                $myWindow.dialog({
                    title: 'Select an address',
                    modal: true,
                    width: 'auto'
                });
                $myWindow.show();
                $myWindow.dialog("open");
                // End Dialog Code

                $('#AddressTable').on('click', 'tr', function () {
//                    alert('You clicked row ' + ($(this).index()));
                    addAddress(InboundAddresses, Message, $(this).index())
                });
            },
            error: function (jqXHR, textStatus, errorThrown) {
                $('#Message').val('Kaboom!!! (The call blew up...#thatsucks)');
                alert('The Dialog Box call failed...Sorry :(');
            }
        });

我跟踪了代码并且调用正确地发送了内容(在fiddler中验证) 控制器中的接收方法确实有对象,但这些对象中的内容为空。我认为这是一个解析问题。

请参阅以下方法的代码。

public PartialViewResult ShowAddresses(List<Address> Addresses)
        {
            ShowAddressViewModel viewModel = new ShowAddressViewModel();
            viewModel.Addresses = Addresses;
            viewModel.Message = "NEW";
    return PartialView("_ShowAddress", viewModel);
}

1 个答案:

答案 0 :(得分:1)

您传递的json对象上的每个属性都必须映射到Adresss类中的属性

即。

public class Address
{
   public string address { get; set; }
   public string city { get; set; }
   // etc...
}

在您的示例json数据中,您说您有address1,address2无效,json对象属性必须完全匹配。