Конвертировать IEnumerable модель в массив Json - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь преобразовать модель IEnumerable в массив Json в моем представлении через jQuery, как показано ниже:

@model IEnumerable<SamsungTools.Models.SaleCenter>

var arr = @Html.Raw(Json.Encode(Model))

Но ошибка возникает как:

Циклическая ссылкабыл обнаружен при сериализации объекта типа 'System.Data.Entity.DynamicProxies.SaleCenter_7A0CE6A0DDE13787CC1DADED551C4B390761E2E4BC6E0E6F5B8DF894725F4934'.

Что не так в моем коде?

1 Ответ

0 голосов
/ 01 марта 2019

Благодаря @ckuri, решаем, создавая новую модель представления с указанными свойствами и передавая ее список для просмотра.В новой модели представления я удалил два свойства, которые были вызваны циклическим циклическим циклом в JSon.

Наконец, модель:

public class SaleCenterViewModel
{
    public string Title { get; set; }
    public string TitleEN { get; set; }
    public int Code { get; set; }
    public string Lat { get; set; }
    public string Lng { get; set; }
    public string Phone { get; set; }
    public string Address { get; set; }
    public string AddressEN { get; set; }
    public static SaleCenterViewModel Set(SaleCenter saleCenter)
    {
        return new SaleCenterViewModel
        {
            Title = saleCenter.Title,
            TitleEN = saleCenter.TitleEN,
            Code = saleCenter.Code,
            Lat = saleCenter.Lat,
            Lng = saleCenter.Lng,
            Phone = saleCenter.Phone,
            Address = saleCenter.Address,
            AddressEN = saleCenter.AddressEN
        };
    }
}

Хранение:

public List<SaleCenterViewModel> GetAllSaleCenters()
{
    return
        db.SaleCenters
        .Select(SaleCenterViewModel.Set)
        .ToList();
}

Контроллер:

public ActionResult Map()
{
    GeneralStore gs = new GeneralStore();
    ViewData["Cities"] = gs.GetCitiesHaveSaleCenter();
    ViewData["Areas"] = gs.GetAllAreas();
    var saleCenters = gs.GetAllSaleCenters();
    return View(saleCenters);
}

Просмотр:

@model List<SamsungTools.ViewModels.SaleCenterViewModel>

<script>
    var arr = @Html.Raw(Json.Encode(Model))
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...