2017-09-05 23 views
1

私はajaxコールを持っています。私のコントローラからJSONとしてデータのリストを取得する必要があります。私はこの例外を取得し続けます。呼び出しの対象によって例外がスローされましたMVC

$('#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!!!"); 
    } 
}); 
}); 

コントローラーコード:

私はアヤックスからパラメータ値を取得し、DBからすべての値を取得することができます下記の

は私のAJAX呼び出しです。

[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); 
    } 

例外メッセージ:

呼び出しのターゲットが例外をスローされました。

例外スタックトレース:MVCはJSONシリアライズ返された値にしようとしたときにエラーが発生しているようにスタックトレースに基づいて

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) 
+1

例外の 'StackTrace'の代わりに、' ToString() 'メソッドを呼び出した結果を提供できますか? – StriplingWarrior

+1

'Property'クラスを投稿できますか? –

+0

あなたの例外には内部例外がある可能性がありますので、詳細を確認してください。 –

答えて

0

に、それが見えます。この値は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); 
    } 

これは、単一のデータベース・ラウンドトリップで完了します、一方、あなたの現在のコードはいくつかの往復を行います。

関連する問題