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

4

1 回答 1

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());
}

(这本质上是将您的代码重写为单个查询,这可能有助于您进行调试。)

于 2012-05-07T04:03:26.420 回答