action始终返回null

时间:2012-05-04 18:53:52

标签: c# linq c#-4.0

我的行动是:

[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。它应该返回过滤后的帖子对象或只是所有帖子而不过滤。有什么问题吗 ??我找不到它。

1 个答案:

答案 0 :(得分: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());
}

(这实际上是将您的代码重写为单个查询,可以帮助您进行调试。)