为什么我会在这段代码中看到上述错误?该错误特别发生在t.TerritoryID == territoryID
部分:
[HttpPost]
public ActionResult Add(EmployeeViewModel employee, string[] territories)
{
ModelState.Remove("territories");
if (ModelState.IsValid)
{
if (territories != null)
{
employee.Territories = territories.Select(territoryID => repository.Territories.FirstOrDefault(t => t.TerritoryID == territoryID));
}
employee.EmployeeID = repository.CreateEmployee(employee);
}
return RedirectToAction("Index");
}
如果您想知道,TerritoryID
是一个整数。关于如何纠正这个问题的任何建议?提前谢谢。
答案 0 :(得分:8)
Int和string是两种不同的类型,你不能直接比较它们。您可以将int转换为字符串,反之亦然。
将territories
更改为int数组:var territoriesInt = territories.Select(x => int.Parse(x)).ToArray()
,然后使用它。
上面的代码是字符串到int的转换。如果字符串不包含数字,则可能会失败。如果有人发送错误数据,我宁愿故意让它失败。如果您将地区字符串与territoryID.ToString()
进行比较,也可以采用相反的方式。