Как вернуть модель mvc5 с помощью вызова ajax, который затем можно повторить с помощью foreach (mvc5model, function (key, value) {} - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно вернуть модель из контроллера 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

...