2014-10-20 62 views
1

我已添加后续操作以获取产品accroding cat.id.错误“Int32 ToInt32(System.String)'

[HttpPost] 
public ActionResult OnlineHome(string CategoryId) 
{ 
    OnlineDataModel dm = new OnlineDataModel(); 
    dm.CatagoryData = new List<category>(); 
    dm.ProductData = new List<product>(); 
    dm.CatagoryData = db.categories.ToList(); 
    //dm.ProductData = (from p in db.products where p.CategoryID == Convert.ToInt32(CategoryId) select p).ToList() ; 
    var data= db.products.Where(d => d.CategoryID == Convert.ToInt32(CategoryId)).ToList(); 
    return View(dm); 
} 

我正在以下错误

LINQ实体无法识别方法“的Int32 ToInt32(System.String)”方法,和>这种方法不能被翻译成表达商店。

需要针对此问题的解决方案。

+0

你试过Int32.Parse()吗? – helb 2014-10-20 06:44:32

+2

将该值转换为int,然后将该值传递给表达式。但是,为什么不只是使用参数'int'而不是那个字符串,所以你不需要做任何转换('DefaultModelBiner'会为你做) – 2014-10-20 06:45:47

+0

谢谢stephen的帮助。有用。如果我将它转换为表达式中的int32,它为什么不起作用。 – mayurb 2014-10-20 06:59:10

回答

1

这样做。

int catId = Convert.ToInt32(CategoryId); 
    var data = db.products.Where(d => d.CategoryID == catId).ToList(); 
2

解决方案1:

试图声明您整型变量第一:

int iCategoryId = Convert.ToInt32(CategoryId); 

然后更新您的代码:

var data= db.products.Where(d => d.CategoryID == iCategoryId).ToList(); 

方案2(推荐):

M AKE确保你的行动接收一个整数,修改变量的类型:

public ActionResult OnlineHome(int CategoryId) 

然后更新您的代码以同样的方式来:

var data = db.products.Where(d => d.CategoryID == CategoryId).ToList(); 

随意自己投验证添加到这两个解决方案。

相关问题