2016-10-20 2 views
0

저는 C# .NET 응용 프로그램을 만들고 있습니다.WebApi 컨트롤러에 대한 AJAX 호출에서 데이터베이스를 쿼리하는 방법은 무엇입니까?

검색 창을 사용하는 웹 페이지가 있습니다. 사용자가 입력을 시작하면 Jquery Keyup 함수를 사용하여 자동으로 Webservice를 호출합니다 (ApiController를 확장하는 Controller 호출을 사용하고 있습니다).

Webservice의 요점은 사용자가 검색 창에 입력 한 내용을 기반으로 데이터베이스에서보기로 데이터 목록을 반환하는 것입니다.

사용자가 문자 "A"를 입력하면 Webservice 기능에서 문자 "A"로 시작하는 모든 객체를 데이터베이스에 쿼리합니다.

제 질문은 코드를 올바른 JSON 형식으로 변경하여보기로 되돌릴 수있는 방법입니다. 지금은 쿼리가 IQueryable을 반환하고 있습니다. 아래 코드는 Ajax에 의해 잘 호출된다.

그래서 저는 아래의 Action 메소드 내부의 문제라고 생각합니다. "term"매개 변수는 사용자가 검색 창에 입력하는 문자입니다.

[System.Web.Http.HttpGet] 
public JsonResult GetAllofTheProducts(string term) 
{ 
    //var JsonArray = Json.stringify(products); 

    List<string>vehicle; 

     vehicle = db.Vechicle.Where(v => v.CarName.Equals(term) || v.CarName.ToLower().Contains(term.ToLower()) || v.CarName.ToUpper().Contains(term.ToUpper())); 

     //var json = new JavaScriptSerializer().Serialize(result);  
    // return json;  
    return Json(vehicle); 

} 

업데이트 : 내 질문을 확장하기 위해, 나는 내가보기에 전달할 수 있도록 문자열 내 데이터베이스 쿼리의 결과를 변경하는 방법을 알고 싶어요. 이것은 Ajax 요청이므로 DB 결과를 직접 전달할 수는 없습니다.

+0

원하는 것은 무엇입니까? 당신은 단지 당신의 '차량'을 json으로 변환하고 그것을 반환해야합니다. –

+0

'목록 차량을 변경하십시오 '목록에 차량;' –

+0

그게 효과가 있었는지 지금은 그것을 테스트 할 것입니다 – hoChay

답변

0

이 코드에서 오류가 발생하는지 또는 클라이언트 측에서 문제가 발생하는지 확실하지 않습니다.

오류가 없다고 가정하고 비어있는 JSON Array를 받고 있다면, 결과를 .ToList()를 사용하여 명시 적으로 캐스팅하여 데이터베이스에서 데이터를 가져와야한다고 생각합니다. (만큼 당신이 차량에서 항목을 얻기 위해 요구하지 않는 한, 그것은로드하지 않음)

vehicle = db.Vechicle.Where(v => v.CarName.ToLower().Contains(term.ToLower())).ToList(); 

또한 나는 정확히 일치하는 검색 쿼리

의 일부 필요없는 부분을 제거 할 것 부분 일치보다 적은 결과를 반환합니다. 사용자 입력과 데이터 집합 사이의 모든 차이를 없애기 때문에 같은 케이스에 모든 것을 넣는 것이 좋습니다. 그래야 더 낮은 케이스 또는 대문자를 선택해야합니다 (동일한 결과를 얻을 수 있기 때문에).

EDIT 2 :

내가 지금 여기에 너무 적은 명성을 가지고 내가 언급 할 수는 답변입니다 :

추가 차량의리스트를 돌려 것으로

vehicle = db.Vechicle.Where(v => v.CarName.ToLower().Contains(term.ToLower())).Select(v => v.<NAME>).ToList(); 

다음, 당신은 단지 이름을 얻기 위해 원하는브랜드의, 그냥 필드 이름에 해당하는 바꿉니다.

+0

서버 쪽에서 요청을 받았습니다. 이 오류가 발생했습니다 : – hoChay

+0

은 암시 적으로 문자열을 hoChay

+0

으로 변환 할 수 없습니다. 실제로 내 자신의 게시물에 덧글을 달 수 있으며 .ToList() 전에. @Select (v => v. )를 추가하고 을 바꿉니다. 당신이 찾고있는 분야와 – Drizzt

관련 문제