Entity Framework Navigation
свойства вызывают исключение "Ссылка на круговой объект" , когда мой Kendo Grid
пытается сериализовать коллекцию в моем View Model
. Мы используем Newtonsoft.JSON
, поэтому я хотел (глобально) установить "ReferenceLoopHandling" в "Игнорировать" в моем Application_Start()
.
Как ни странно, ASP.NET, похоже, не соблюдает настройки ... поэтому я все еще получаю исключение.
... ЛЮБЫЕ ИДЕИ?
ВЕРСИЯ:
- Microsoft.AspNet.Mvc (5.2.3.0)
- Microsoft.AspNet.WebApi (5.2.3)
- Newtonsoft.Json (10.0.3)
SAMPLE APPLICATION_START:
Переход к вызову на верх или низ не меняет результат ...
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
LoadSiteMap();
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
}
ОБРАЗЕЦ ОБРАЗЦОВ БРИТВЫ:
Обратите внимание на опцию «BindTo» ...
@(Html.Kendo().Grid<RTUDeviceControlRoomAlarm>()
.Columns(columns =>
{
columns.Bound(x => x.Id)
.Visible(false);
columns.Bound(x => x.RTUDeviceId)
.Visible(false);
columns.Bound(x => x.Register)
.Title("Register")
.Width(50);
columns.Bound(x => x.Description)
.Title("Description")
.Width(100);
columns.Bound(x => x.LowLowLimitOFF)
.Title("LL Limit/OFF")
.Width(50);
columns.Bound(x => x.LowLowLimitON)
.Title("LL Limit/ON")
.Width(50);
columns.Bound(x => x.HiLimit)
.Title("Hi Limit")
.Width(50);
columns.Bound(x => x.HiHiLimit)
.Title("HH Limit")
.Width(50);
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(70);
})
.Name("gridControlRoomAlarms")
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Sortable()
.Scrollable()
.BindTo(Model.RTUDeviceControlRoomAlarms)
.DataSource(dataSource => dataSource.Ajax()
.PageSize(50)
.Model(model => { model.Id(m => m.Id); })
.Create(update => update.Action("Create", "ControlRoomAlarm", new { Area = "Documents" }))
.Update(update => update.Action("Update", "ControlRoomAlarm", new { Area = "Documents" }))
.Destroy(update => update.Action("Destroy", "ControlRoomAlarm", new { Area = "Documents" }))
)
.HtmlAttributes(new { @class = "", @style = "height: 400px;" }))
UPDATE:
Также попробовал ...
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;