[英]Exception has been thrown by the target of an invocation MVC
我有一個ajax調用,我需要從控制器以JSON格式獲取數據列表。 我一直在得到這個例外。
下面是我的ajax調用:
$('#button1').click(function (e) {
e.preventDefault();
var id= $("#textboxvalue").val();
debugger;
var url = "@Url.Action("GetList", "xyz")";
console.log(url);
$.ajax({
url: url,
type: "GET",
async: false,
data: { id: id},
dataType: "json",
traditional: true,
contentType: "application/json; charset=utf-8",
success: function (data) {
debugger;
for (var i in data) {
}
},
error: function (xhr, ajaxOptions, thrownError) {
//Always goes to error function
alert("An error has occured!!!");
}
});
});
控制器代碼:
我可以從ajax獲取參數值,並從db獲取所有值。
[HttpGet]
public ActionResult GetList(string id)
{
var pList = new List<Property>();
using (var db = new LiensTrackerEntities())
{
var recipient = db.Recipients.FirstOrDefault(x => x.id== id);
//Need to make sure there is an Properties object
if (recipient != null &&
recipient.RecipientPropertyCollections.Count() != 0)
{
List<int> properties =
recipient.RecipientPropertyCollections.Select(p => p.Property_ID).ToList();
foreach (var item in properties)
{
Property p1 = db.Properties.FirstOrDefault(u =>
u.PropertyID == item);
pList.Add(p1);
}
// I can see the values in pList on continue it goes to ERROR function in
Ajax with 500 error
return Json(pList, JsonRequestBehavior.AllowGet);
}
}
return Json(" No spouse info in Medicaid",
JsonRequestBehavior.AllowGet);
}
異常消息:
調用的目標已引發異常。
異常堆棧跟蹤:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[]
arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,
Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags
invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Web.SecurityUtils.MethodInfoInvoke(MethodInfo method, Object target, Object[] args)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable(IEnumerable enumerable, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable(IEnumerable enumerable, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember)
at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember)
at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat)
at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, SerializationFormat serializationFormat)
at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj)
at System.Web.Mvc.JsonResult.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
基於堆棧跟蹤,當MVC嘗試對返回的值進行JSON序列化時,似乎發生了錯誤。 由於此值為List<Property>
,因此Property
類上可能有一個成員,該成員在某些情況下被調用時會引發異常。
考慮創建單獨的數據傳輸對象類以返回而不是使用的模型類。 或者,檢查Entity模型類以查看為什么調用其屬性可能會引發異常。
附帶說明一下,如果您的實體模型設置正確,那么您應該能夠大大簡化查詢邏輯:
using (var db = new LiensTrackerEntities())
{
var pList = db.Properties
.Where(p => p.RecipientPropertiesCollection
.Any(rp => rp.RecipientId == id))
.ToList();
return Json(pList, JsonRequestBehavior.AllowGet);
}
這將在一次數據庫往返中完成,而您當前的代碼將進行幾次往返。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.