json 错误 MVC 的实体 - 序列化类型对象时检测到循环引用
Entity to json error MVC - A circular reference was detected while serializing an object of type
我的 mvc 应用正在使用 bootstrap table。
我的模型是我的数据库 table tSSTCodes,使用 Entity Framework
访问
@ModelType IEnumerable(Of SupportDiary.tSSTCode)
我对其他 table 使用了相同的方法,它们都有效(生成了 table),但此视图 returns 出现错误:
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.tSSTCode_8DE9547CF85FA0D8C54E713F4E2A7A2104EC7CB828A4B0F29604CE8AE871F8A3'.
分界线是....
var tdata = @Html.Raw(Json.Encode(Model));
模型很简单table。这是sql创建它;
CREATE TABLE [dbo].[tSSTCodes](
[sstID] [int] IDENTITY(1,1) NOT NULL,
[sRU] [nvarchar](10) NOT NULL,
[sProjectCode] [nvarchar](10) NOT NULL,
[sProjectName] [nvarchar](50) NOT NULL,
[sTaskNo] [nvarchar](10) NOT NULL,
[sTaskName] [nvarchar](50) NOT NULL,
[sRedundant] [bit] NOT NULL CONSTRAINT [DF_tSSTCodes_sRedundant] DEFAULT ((0)),
CONSTRAINT [PK_tSSTCodes] PRIMARY KEY CLUSTERED
(
[sstID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
我的BootstrapTable代码是
<table id="table"
data-classes="table table-hover table-condensed"
data-striped="true"
data-toolbar="#toolbar"
data-pagination="true"
data-click-to-select="true"
data-search="true"
data-show-export="true"
data-show-pagination-switch="true"
data-show-toggle="true"
data-show-columns="true" >
<thead>
<tr>
<th data-field="sstID" data-formatter="btnViewFormatter">ID</th>
<th data-field="sRU" >R/U</th>
<th data-field="sProjectCode" >Project Code</th>
<th data-field="sProjectName" >Project Name</th>
<th data-field="sTaskNo" >Task No</th>
<th data-field="sTaskName" >Task Name</th>
<th data-field="sRedundant" data-formatter="trueFalseFormatter" >Redundant</th>
</tr>
</thead>
</table>
相关的脚本是:
<script type="text/javascript">
var tdata = @Html.Raw(Json.Encode(Model));
console.log(tdata);
var $table = $('#table');
function btnViewFormatter(value) {
return '<a class="btn btn-default btn-sm" href="@Url.Content("~/SSTCodes/Edit?id=")' + value + '" >' + value + '</a>';
}
function trueFalseFormatter(value) {
if (value == true){
return '<span class="glyphicon glyphicon-check"></span>';
} else {
return '<span class="glyphicon glyphicon-unchecked"></span>';
}
}
function getSelectedRow() {
var index = $table.find('tr.success').data('index');
return $table.bootstrapTable('getData')[index];
}
$(function () {
$table.bootstrapTable({
data: tdata,
fixedColumns: true,
fixedNumber: 1,
exportDataType:"all",
exportTypes:['csv', 'txt', 'excel']
});
$table.on('click-row.bs.table', function (e, row, $element) {
$('.success').removeClass('success');
$($element).addClass('success');
});
$table.on('dbl-click-row.bs.table', function (e, row, $element) {
var url = '@Url.Content("~/SSTCodes/Edit?id=")' + getSelectedRow().sstID;
window.navigate(url);
})
});
我无法弄清楚是什么导致了循环引用...在尝试调试时,我尝试将 console.log(tdata);
放在有问题的行之后,但当然它并没有那么远...所以我尝试了 console.log(@Html.Raw(Json.Encode(Model)));
并在 console.log 行出现相同的错误。
更新
链接到另一个问题的可能重复项没有帮助。我的代码基于使用 ADO Entity Frameworks 向导模板生成新的 MVC 控制器。这搭建了一系列 CRUD 视图。然后我所做的就是将每个项目代码的 html table a 替换为 bootstrap table 助手。我已经用几个控制器完成了这个,它们都可以工作。
感谢任何帮助。
实体框架似乎在涉及关系的脚手架上存在问题。在这种情况下 table 我不得不创建自己的视图和代码。
我的 mvc 应用正在使用 bootstrap table。
我的模型是我的数据库 table tSSTCodes,使用 Entity Framework
访问@ModelType IEnumerable(Of SupportDiary.tSSTCode)
我对其他 table 使用了相同的方法,它们都有效(生成了 table),但此视图 returns 出现错误:
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.tSSTCode_8DE9547CF85FA0D8C54E713F4E2A7A2104EC7CB828A4B0F29604CE8AE871F8A3'.
分界线是....
var tdata = @Html.Raw(Json.Encode(Model));
模型很简单table。这是sql创建它;
CREATE TABLE [dbo].[tSSTCodes](
[sstID] [int] IDENTITY(1,1) NOT NULL,
[sRU] [nvarchar](10) NOT NULL,
[sProjectCode] [nvarchar](10) NOT NULL,
[sProjectName] [nvarchar](50) NOT NULL,
[sTaskNo] [nvarchar](10) NOT NULL,
[sTaskName] [nvarchar](50) NOT NULL,
[sRedundant] [bit] NOT NULL CONSTRAINT [DF_tSSTCodes_sRedundant] DEFAULT ((0)),
CONSTRAINT [PK_tSSTCodes] PRIMARY KEY CLUSTERED
(
[sstID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
我的BootstrapTable代码是
<table id="table"
data-classes="table table-hover table-condensed"
data-striped="true"
data-toolbar="#toolbar"
data-pagination="true"
data-click-to-select="true"
data-search="true"
data-show-export="true"
data-show-pagination-switch="true"
data-show-toggle="true"
data-show-columns="true" >
<thead>
<tr>
<th data-field="sstID" data-formatter="btnViewFormatter">ID</th>
<th data-field="sRU" >R/U</th>
<th data-field="sProjectCode" >Project Code</th>
<th data-field="sProjectName" >Project Name</th>
<th data-field="sTaskNo" >Task No</th>
<th data-field="sTaskName" >Task Name</th>
<th data-field="sRedundant" data-formatter="trueFalseFormatter" >Redundant</th>
</tr>
</thead>
</table>
相关的脚本是:
<script type="text/javascript">
var tdata = @Html.Raw(Json.Encode(Model));
console.log(tdata);
var $table = $('#table');
function btnViewFormatter(value) {
return '<a class="btn btn-default btn-sm" href="@Url.Content("~/SSTCodes/Edit?id=")' + value + '" >' + value + '</a>';
}
function trueFalseFormatter(value) {
if (value == true){
return '<span class="glyphicon glyphicon-check"></span>';
} else {
return '<span class="glyphicon glyphicon-unchecked"></span>';
}
}
function getSelectedRow() {
var index = $table.find('tr.success').data('index');
return $table.bootstrapTable('getData')[index];
}
$(function () {
$table.bootstrapTable({
data: tdata,
fixedColumns: true,
fixedNumber: 1,
exportDataType:"all",
exportTypes:['csv', 'txt', 'excel']
});
$table.on('click-row.bs.table', function (e, row, $element) {
$('.success').removeClass('success');
$($element).addClass('success');
});
$table.on('dbl-click-row.bs.table', function (e, row, $element) {
var url = '@Url.Content("~/SSTCodes/Edit?id=")' + getSelectedRow().sstID;
window.navigate(url);
})
});
我无法弄清楚是什么导致了循环引用...在尝试调试时,我尝试将 console.log(tdata);
放在有问题的行之后,但当然它并没有那么远...所以我尝试了 console.log(@Html.Raw(Json.Encode(Model)));
并在 console.log 行出现相同的错误。
更新 链接到另一个问题的可能重复项没有帮助。我的代码基于使用 ADO Entity Frameworks 向导模板生成新的 MVC 控制器。这搭建了一系列 CRUD 视图。然后我所做的就是将每个项目代码的 html table a 替换为 bootstrap table 助手。我已经用几个控制器完成了这个,它们都可以工作。
感谢任何帮助。
实体框架似乎在涉及关系的脚手架上存在问题。在这种情况下 table 我不得不创建自己的视图和代码。