Ниже приводится мое частичное представление. Вызов контроллера выполняется с помощью вызова 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 :(');
}
});
Я проследил код, и вызов правильно отправил содержимое (проверено в скрипде). Метод приема в контроллере имеет объекты, но контент в этих объектах имеет значение NULL. Я думаю, что это проблема синтаксического анализа.
См. Код для метода ниже.
public PartialViewResult ShowAddresses(List<Address> Addresses)
{
ShowAddressViewModel viewModel = new ShowAddressViewModel();
viewModel.Addresses = Addresses;
viewModel.Message = "NEW";
return PartialView("_ShowAddress", viewModel);
}
Каждое свойство вашего json-объекта, которое вы передаете, должно сопоставляться с свойством в вашем классе Adresss
т.е.
public class Address
{
public string address { get; set; }
public string city { get; set; }
// etc...
}
в ваших примерах json-данных вы говорите, что у вас есть адрес1, адрес2, который не будет работать, свойства объекта json должны точно совпадать.