我想要做的是從人員列表中獲取特定人員。我的帖子工作正常,我在控制器中找到我正在尋找的人爲「chosenPerson」。之後,我想讓這個人成爲一個複雜的Json對象,用於我的視角。但在serializer.Serialize(chosenPerson)的東西似乎不工作,我得到該行的說法異常:如何將db對象作爲複雜的Json對象返回?
An exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll but was not handled in user code
其他信息:異常已通過調用的目標引發異常」
JS鑑於:
$.ajax({
type: 'POST',
url: '@Url.Action("ReturnPerson", "Home")',
contentType: 'application/json; charset=utf-8',
data: emailUnique,
error: function (event, jqxhr, settings, thrownError) {
console.log(event + " || " + jqxhr + " || " + settings + " || " + thrownError);
}
});
chosenPerson = $.getJSON('/Home/ReturnPerson/');
控制器:
[HttpPost]
public ActionResult ReturnPerson(string emailUnique)
{
var db = new CvAdminContext();
var chosenPerson= db.Persons.Where(p => p.Email == emailUnique);
JavaScriptSerializer serializer = new JavaScriptSerializer();
return Json(serializer.Serialize(chosenPerson), JsonRequestBehavior.AllowGet);
}
敢肯定你可以做'返回JSON(chosenPerson ...'和MVC會自動連載爲你。你可能不得不把'.toList()'放在where之後,以強制它在嘗試序列化之前運行EF查詢。 – ADyson
@ADyson我試着這樣做,並得到以下錯誤:「自引用循環檢測到屬性'Person' – ForTheLoveOfCode
selectedPerson對象是否具有名爲Person的屬性,它也是同一類型?請參閱此處的潛在解決方案:h ttp://stackoverflow.com/questions/7397207/json-net-error-self-referencing-loop-detected-for-type – ADyson