我知道有很多人遇到此错误,但大多数人都使用内置的id
功能,但我不是。除了我在本网站上阅读的内容之外,我还需要提出一个友好的错误,而不是内置的黄色死亡屏幕:
参数字典包含参数" productId'的空条目。 非可空类型&Systems.Int32'
我的网址是......
/ myController的/ MyView的人= 789&安培;?的productId = 123
...其中productId实际上应该包含一个整数值。即使我在方法中检查它是null
,MVC也会在检查之前抛出异常。
是否可以捕获此错误并提供错误视图?
我知道我可以将变量类型设置为Int32?
,但这似乎是一个黑客攻击,因为方法 需要该值。
public ActionResult Show(string person, Int32 productId)
{
if (productId== null) // exception occurs before this point, so this check fails
{
return View("Error", new ErrorViewModel { Summary = "No value provided" });
}
// ....
}
答案 0 :(得分:0)
你的问题很混乱,这就是你应该如何编写行动的代码:
public ActionResult Show(string person, Int32? productId)
{
if (productId.HasValue == false ) // exception occurs before this point, so this check fails
{
return View("Error", new ErrorViewModel { Summary = "No value provided" });
}
// ....
}
在您发布的代码中,productId永远不会为null,因为没有方法签名可以匹配其中没有productId
的查询字符串。现在有一个可以为空的productId
你的代码是有意义的。