Мне нужно вернуть модель из контроллера mvc 5 с помощью вызова ajax в формате ObjectArray, который можно повторять в виде пары ключ-значение.Я пробовал stringify и toJSON и @ HTML.raw и сериализовал модель на стороне контроллера или использовал приведение к Json на стороне контроллера, но безуспешно.Переданная модель viewModel является экземпляром класса с несколькими свойствами.
Код:
public JsonResult FindPersonOn( long? IdNumber)
{
// populate viewModel.Person
// populate ViewModel.Designation
//JavaScriptSerializer oSerializer =
new JavaScriptSerializer();
//string sJSON = oSerializer.Serialize(driverViewModel);
//return Json(sJSON);
// return Json(viewModel)
}
JS:
$.ajax({
type: "Post",
url: "/DesignationPerson/FindPersonOn/",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (data)
{
//var obj = JSON.stringify(data);
//var obj = $.toJSON(data)
var obj = data;
$.each(obj, function (key, value)
{
if (key == 'person')
{
// populate some html elements
$('#LastName').val(value.LastName);
}
});
}
});
Exception;Необработанное исключение в строке 489, столбец 2 в http://localhost:60667/Scripts/jquery-3.3.1.js 0x800a138f - Ошибка времени выполнения JavaScript: недопустимый операнд в 'in': ожидался объект
Данные:
{"crudAction":null,"DesignationUrl":null,"PersonID":1,"FkTitleID":1,"TitleCode":"Mr","TitleDetail":"Mister",
"FirstName":"Neal","LastName":"Rogers","NickName":"Tinkerbell","SAIdNumber":"6512215026087","FkGenderID":1,
"DateBirth":"\/Date(-127188000000)\/",
"TitleLookup":[
{"Disabled":false,"Group":null,"Selected":true,"Text":"Mister","Value":"1"},
{"Disabled":false,"Group":null,"Selected":false,"Text":"Missus","Value":"2"},
],
"ClassificationLookup":[
{"Disabled":false,"Group":null,"Selected":false,"Text":"Active","Value":"8"},
{"Disabled":false,"Group":null,"Selected":false,"Text":"Suspended","Value":"9"}
],
"ID":null,
"FkEntityPersonID":null,
"FkRegionID":null,
"FkClassificationID":null,
"ClassificationDate":null,
"RegionDetail":null,
"ClassificationDetail":null}
Обычно япередать режим из ActionResult с возвращаемым представлением (модель) и в представлении я сериализирую его с помощью бритвы
@using System.Web.Script.Serialization
@{
var javaScriptSearilizer = new JavaScriptSerializer();
var serializedPersonViewModel = javaScriptSearilizer.Serialize(Model);
}
и в сценарии на $ (документ). уже получаю его в локальную переменную с serializedPersonViewModel= @ Html.Raw (serializedPersonViewModel);
но в случае успешного выполнения ajax я не могу заставить его работать.
TIA