2016-09-02 4 views
0

Я использую $ http-запрос для вызова MVC-контроллера и возврата данных в формате JSON. Но я не могу получить результат в 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)); 
} 

Выше MVC контроллер

+1

Просто вернуться 'JSon (член JsonRequestBehavior.AllowGet)' – Nkosi

ответ

1

Это действие для зрения FilerMember

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

Это действие будет вызываться с точки зрения на стороне клиента. Нет необходимости возвращать 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

Я хочу вернуть вид, потому что я с помощью единой концепции страницы приложения , Если удалить View, тогда мой просмотр не будет отображаться. У вас есть решение. Thx – inc

+0

ok затем переместите вызов фильтра на другое действие, которое отвечает только за возврат данных. – Nkosi

+0

@Nikosi: Может привести пример. Я новичок в mvc.thx – inc

Смежные вопросы