C#MVC - 根据查询字符串中传递给Controller的eNum值过滤结果

时间:2016-05-24 07:34:16

标签: c# asp.net-mvc linq

好的,所以这应该很容易,但我很挑剔。

MODEL

public enum ItemType
    {
        Article = 1,
        Link = 2,
        Event = 3,
        Training = 4,
        Job = 5
    }

  public class SiteItem 
    {

     public int ID { get; set; }
     public ItemType ItemType { get; set; }
}

我想根据查询字符串

过滤结果

http://site/Admin/AllItems?type=4

这将返回所有 Training 项目。

CONTROLLER

public ActionResult AllItems(int? passedItem)
        {
            IQueryable<SiteItem> siteItems;               

                siteItems = db.SiteItems.Include(s => s.ApplicationUser).
                    Include(i => i.TagLinks).
                    Where(x => x.Approved == true);    

                if (passedItem > 0)
                {                   
                    siteItems = siteItems.Where(t => t.ItemType = passedItem);
                }

                siteItems = siteItems.OrderByDescending(a => a.DatePosted);

            return View(siteItems.ToList());          
        }

这不起作用。我无法从查询字符串传递整数值来过滤结果。在数据库中,ItemType字段的编号为4,3,5等。我只想将整数与整数匹配。

希望这一切都有意义。感谢。

1 个答案:

答案 0 :(得分:0)

试试这个

旧代码

siteItems = siteItems.Where(t => t.ItemType = passedItem);

您需要输入强制转换属性

更新了代码

 siteItems = siteItems.Where(t => t.ItemType == (ItemType)pass