2016-09-02 13 views
0

MVCコントローラを呼び出してJSON形式でデータを返すために$ http requestを使用します。しかし、私はjavascript/angualr jsで結果を得ることができません。 HTMLページ全体を返します。私はどこでミスをしたのですか?asp.net MVC return json

myapp.controller('MyCtrl', ['$scope', '$http', function ($scope, $http) { 
$scope.toggle = function() { 
    $http({ 
     url: "/Admin/FilterMember", 
     method: "GET", 
     params: { id: $('#txtsearch').val() } 
    }).then(function (result) { 
     alert(result); 
    }); 
}; 
}]); 

上記はJSファイルの角形スクリプトです。

public ActionResult FilterMember(string id) 
{ 
    SqlParameter[] SqlParam = { new SqlParameter("@Filter", id) }; 
    DataTable dTable = MasterMindDB.dTableSP(DbConn, "SP_Get_MemberList", SqlParam); 
    List<Member> member = new List<Member>(); 

    foreach (DataRow row in dTable.Rows) 
    { 
     member.Add(new Member 
     { 
      MemberName = row["Member ID"].ToString(), 
      Email = row["Email"].ToString(), 
      JoinDate = row["Join Date"].ToString(), 
      Status = row["Status"].ToString() 
     }); 
    } 
    return View("Member", Json(member, JsonRequestBehavior.AllowGet)); 
} 

は、上記のこのアクションは、このアクションは、クライアント側のビューから呼び出されますFilerMemberビュー

[HttpGet] 
public ActionResult FilterMember() { 
    return View(); 
} 

ためであるMVCコントローラ

+1

ジャスト 'JSON(メンバー、JsonRequestBehavior.AllowGet)を返す' – Nkosi

答えて

1

です。 ViewResultを返す必要はありません、ただデータ

[HttpGet] 
public ActionResult GetMemberById(string id) { 
    SqlParameter[] SqlParam = { new SqlParameter("@Filter", id) }; 
    DataTable dTable = MasterMindDB.dTableSP(DbConn, "SP_Get_MemberList", SqlParam); 
    List<Member> member = new List<Member>(); 

    foreach (DataRow row in dTable.Rows) { 
     member.Add(new Member { 
      MemberName = row["Member ID"].ToString(), 
      Email = row["Email"].ToString(), 
      JoinDate = row["Join Date"].ToString(), 
      Status = row["Status"].ToString() 
     }); 
    } 
    //Just return JsonResult. 
    return Json(member, JsonRequestBehavior.AllowGet); 
} 

更新クライアント

myapp.controller('MyCtrl', ['$scope', '$http', function ($scope, $http) { 
$scope.toggle = function() { 
    $http({ 
     url: "/Admin/GetMemberById", 
     method: "GET", 
     params: { id: $('#txtsearch').val() } 
    }).then(function (result) { 
     alert(result); 
    }); 
}; 
}]); 
+0

私はシングルページアプリケーションの概念を使用しているので、私はビューを返したいです。ビューを削除すると、ビューがレンダリングされません。何か解決策がありますか? Thx – inc

+0

okこれで、フィルタ呼び出しを、データを返すことのみを担当する別のアクションに移動します。 – Nkosi

+0

@ニコシ:いくつかの例を挙げることができます。私はmvc.thxの初心者です – inc

関連する問題