Thanks to @ckuri, Solved by creating a new view model with specified properties and pass a list of it to view. In new view model I removed two properties which were caused self referencing circular loop in JSon convert.
Finally,
Model:
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
};
}
}
Store:
public List<SaleCenterViewModel> GetAllSaleCenters()
{
return
db.SaleCenters
.Select(SaleCenterViewModel.Set)
.ToList();
}
Controller:
public ActionResult Map()
{
GeneralStore gs = new GeneralStore();
ViewData["Cities"] = gs.GetCitiesHaveSaleCenter();
ViewData["Areas"] = gs.GetAllAreas();
var saleCenters = gs.GetAllSaleCenters();
return View(saleCenters);
}
View:
@model List<SamsungTools.ViewModels.SaleCenterViewModel>
<script>
var arr = @Html.Raw(Json.Encode(Model))
</script>