Asp.net mvc 4 错误';Int32到Int32(System.String)和#x27;
我添加了以下操作,以使产品符合cat.idAsp.net mvc 4 错误';Int32到Int32(System.String)和#x27;,asp.net-mvc-4,Asp.net Mvc 4,我添加了以下操作,以使产品符合cat.id [HttpPost] public ActionResult OnlineHome(string CategoryId) { OnlineDataModel dm = new OnlineDataModel(); dm.CatagoryData = new List<category>(); dm.ProductData = new List<product>(); dm.CatagoryData = db.ca
[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);
}
[HttpPost]
public ActionResult OnlineHome(字符串类别ID)
{
OnlineDataModel dm=新的OnlineDataModel();
dm.CatagoryData=新列表();
dm.ProductData=新列表();
dm.CatagoryData=db.categories.ToList();
//dm.ProductData=(从db.products中的p开始,其中p.CategoryID==Convert.ToInt32(CategoryID)选择p).ToList();
var data=db.products.Where(d=>d.CategoryID==Convert.ToInt32(CategoryID)).ToList();
返回视图(dm);
}
我得到以下错误
LINQ to Entities无法识别方法“Int32到Int32(System.String)”方法,并且>无法将此方法转换为存储表达式
需要解决这个问题。像这样做
int catId = Convert.ToInt32(CategoryId);
var data = db.products.Where(d => d.CategoryID == catId).ToList();
解决方案1:
首先尝试声明整数变量:
int iCategoryId = Convert.ToInt32(CategoryId);
然后将代码更新为:
var data= db.products.Where(d => d.CategoryID == iCategoryId).ToList();
解决方案2(建议):
确保您的操作接收整数并修改变量的类型:
public ActionResult OnlineHome(int CategoryId)
然后以相同的方式将代码更新为:
var data = db.products.Where(d => d.CategoryID == CategoryId).ToList();
您可以将自己的强制转换验证添加到这两个解决方案中。您是否尝试过使用Int32.Parse()替代?将值转换为int,然后将该值传递给表达式。但是为什么不把参数
int
改为字符串,这样您就不需要进行任何转换了(DefaultModelBiner将为您进行转换)谢谢stephen的帮助。它起作用了。为什么在表达式中将其转换为int32时不起作用。查询必须能够转换为实际的SQL语句,但C#method不能转换为SQL