Serialisieren Ich habe eine asp.net MVC 3 Controller Aktionsmethode wie folgt aus:Eine kreisförmige Referenz detektiert wurde, während ein Objekt des Typs ‚System.Reflection
public JsonResult GetRecordingRates(int Id)
{
List<DefaultRateChart> defaultRateCharts = new List<DefaultRateChart>();
using (IDefaultRateChartManager defaultRateChartManager = new ManagerFactory().GetDefaultRateChartManager()) {
defaultRateCharts = defaultRateChartManager.GetAll().Where(rc => rc.Currency.Id == Id && (!rc.NumberPrefix.StartsWith("#") || rc.NumberPrefix.StartsWith("Default")) && rc.AccountCredit == "Credit").ToList();
}
return Json(defaultRateCharts);
}
I dieser Liste senden möchte jquery ajax Erfolg Verfahren aber ich bin immer 500 Interner Fehler Server
meine ajax-Aufruf ist wie folgt:
$.ajax({
type: "POST",
dataType: "json",
url: "/Home/GetRecordingRates",
data: {
Id: $("#hdCurrencyId").val()
},
success: function (data) {
alert(data);
}
});
In firebug XHR unter Antwort Registerkarte i t sagt:
Beim Serialisieren eines Objekts vom Typ 'System.Reflection.RuntimeModule' wurde ein Zirkelverweis erkannt.
[EDIT]
änderte ich die Aktion-Methode dazu:
public JsonResult GetRecordingRates(int Id)
{
List<DefaultRateChart> defaultRateCharts = new List<DefaultRateChart>();
using (IDefaultRateChartManager defaultRateChartManager = new ManagerFactory().GetDefaultRateChartManager())
{
defaultRateCharts = defaultRateChartManager.GetAll().Where(rc => rc.Currency.Id == Id && (!rc.NumberPrefix.StartsWith("#") || rc.NumberPrefix.StartsWith("Default")) && rc.AccountCredit == "Credit").ToList();
}
return this.Json(
new
{
Result = (from obj in defaultRateCharts select new { Id = obj.Id, DialPrefix = obj.NumberPrefix, Rate = obj.PurchaseRates })
}
, JsonRequestBehavior.AllowGet
);
}
und ich nicht jetzt, dass die Fehlermeldung erhalten, aber wie kann ich die Sammlung in Ajax-Erfolg analysieren. Ich änderte den Erfolg zu Folge, aber es fügt keine Zeilen in der Tabelle hinzu.
success: function (data) {
var row = $('<tr>');
for(var i = 0; i < data.length; i++) {
row.append($('<td>').html(data[i]));
}
$('#results').append(row);
jQuery('#RecordingRates').dialog({ closeOnEscape: false });
$(".ui-dialog-titlebar").hide();
$("#RecordingRates").dialog({ dialogClass: 'transparent' });
$('#RecordingRates').dialog('open');
}
});
In Firebug Net => XHR => Json, zeigt es JSON folgende:
[Object { Id=
1
, DialPrefix=
"1"
, Rate=
2.6
}, Object { Id=
3
, DialPrefix=
"2"
, Rate=
2.6
}, Object { Id=
5
, DialPrefix=
"7"
, Rate=
3.5
}, 3 more...]
0
Object { Id=
1
, DialPrefix=
"1"
, Rate=
2.6
}
1
Object { Id=
3
, DialPrefix=
"2"
, Rate=
2.6
}
2
Object { Id=
5
, DialPrefix=
"7"
, Rate=
3.5
}
3
Object { Id=
7
, DialPrefix=
"8"
, Rate=
6
}
4
Object { Id=
9
, DialPrefix=
"Default"
, Rate=
5
}
5
Object { Id=
15
, DialPrefix=
"Subscription"
, Rate=
15
}
Haben Sie versucht, hart codierte Werte für 'DefaultRateChart' und Entfernen des' using' Teil vorübergehend? Macht keinen Sinn, das zu tun, aber es ist ein guter Weg, um das Problem zu isolieren. –
@vonv. Bitte sehen Sie die Updates – DotnetSparrow
Ist dies eine Art neue Methode zu schreiben oder habe ich Recht, Sie schließen nicht die tr und die TDs. Was bekommst du, wenn du Dinge inspizierst? –