2012-05-04 2 views
0

내 행동이 반환된다조치는 항상 null

[HttpPost] 
public ViewResult SearchPost(FormCollection frm) 
{ 

    IList <post> p =db.posts.Include("user").ToList(); 


    if (Request.Form["area"] != null)   
    { 
     if ((p!=null) && (p.Any())) 

     { 

      p =p.Where(a=>a.area==Request.Form["area"]).ToList();  

     } 
    }   
    if (Request.Form["floor"] != null)   
    {    
     if ((p!=null) && (p.Any())) 

     { 
      p = p.Where(a => a.floor == 
      Request.Form["floor"]).ToList();        
     } 
    }    
    if (Request.Form["garage"] != null)   
    { 
     if ((p!=null) && (p.Any())) 

     { 
      p = p.Where(a => a.garage == 
      Request.Form["garage"]).ToList();          
     } 
    } 


    return View(p); 
} 

이 오류를 보이지 않고있다. 항상 null을 반환합니다. 필터링 된 게시물 개체 또는 필터링없이 모든 게시물을 반환해야합니다. 무슨 문제라도 있습니까 ?? 나는 그것을 찾을 수 없다.

+4

뷰 데이터에 'null'을 반환 할 수있는 방법이 없습니다. 'p'는 모든 경로에 할당됩니다. 빈 목록 일 수도 있지만 'null'이 아닐 수도 있습니다. 그렇다면 다른 것을 의미합니까? –

+0

db.posts.Include ("user")입니다. ToList()는 항상 null입니까? 그게 내가 볼 수있는 유일한 방법은 null을 반환합니다. – Gage

+2

@Gage ToList는 null을 반환하지 않습니다. 그들은 자신의 ToList를 정의하지 않는 한 가능성이 희박합니다. –

답변

2

나는 당신이 다루고있는 유형의 전체 서명을 알고 있지만, 아마도이 코드를 시도하고 당신이 더 나은 결과를 얻을 수 있는지 확인하지 않습니다 이것은 본질적으로의 재 작성 (

[HttpPost] 
public ViewResult SearchPost(FormCollection frm) 
{ 
    var area = Request.Form["area"]; 
    var floor = Request.Form["floor"]; 
    var garage = Request.Form["garage"]; 

    return View(db.posts.Include("user") 
     .Where(a => area == null || a.area == area) 
     .Where(a => floor == null || a.floor == floor) 
     .Where(a => garage == null || a.garage == garage).ToList()); 
} 

당신의 디버깅에 도움이 될 수있는 단일 쿼리로 코드를 작성하십시오.)

+0

+1 - null 체크를 람다로 옮기는 방법이 마음에 들었습니다. – Ramesh

+0

@Ramesh - Ta. :-) – Enigmativity