当Google僵尸程序出现时,我收到了以下错误:
参数字典包含非可空类型'System.Int32'的参数'id'的空条目,用于'someclass'中的方法'System.Web.Mvc.ActionResult Show(Int32)'。可选参数必须是引用类型,可空类型,或者声明为可选参数 参数名称:参数
我想知道在这种情况下是否可以让应用程序抛出404而不是缺少参数异常。
谢谢!
更新以澄清我想要的是这个特定错误的所有情况都会抛出404错误而不是500错误。最好通过编写某种只捕获此错误的包装器。
答案 0 :(得分:8)
public ActionResult Index(int? id)
{
if(!id.HasValue())
{
throw new HttpException(404, "Are you sure you're in the right place?");
}
}
答案 1 :(得分:5)
您要找的是route constraints。
答案 2 :(得分:1)
这不是一篇新文章,我不能保证在最近的MVC版本中没有更好的方法,但我认为这是一个非常好的可能性:)
我相信你应该能够编写一个自定义模型绑定器,它将检查ID属性是否存在并且是必需的,如果它不存在则抛出404错误/拒绝绑定..我知道它并不多,但它可能以正确的方式引导你:)
P.S。可以在此处找到示例模型绑定器及其工作原理:
http://weblogs.asp.net/melvynharbour/archive/2008/11/21/mvc-modelbinder-and-localization.aspx