То, что я пытаюсь сделать, - это получить конкретное лицо из списка лиц. Мой пост отлично работает, и я получаю человека, которого я ищу, как «selectedPerson» в контроллере. После этого я хочу, чтобы этот человек был сложным объектом 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()' после того, где, а также, чтобы заставить его фактически запускать запрос EF до того, как он попытается выполнить сериализацию. – ADyson
@ADyson Я попытался сделать это и получил следующую ошибку: «Self referencing loop обнаружено для свойства «Лицо» – ForTheLoveOfCode
имеет ли объект selectedPerson свойство «Личность», которое также имеет тот же тип? См. возможные решения здесь: h ttp: //stackoverflow.com/questions/7397207/json-net-error-self-referencing-loop-detected-for-type – ADyson