当缺少asp.net mvc的参数时自动抛出404错误

当谷歌机器人出现时,我收到了以下错误:

参数字典包含非可空类型’System.Int32’的参数’id’的空条目,用于’someclass’中的方法’System.Web.Mvc.ActionResult Show(Int32)’。 可选参数必须是引用类型,可空类型,或者声明为可选参数。
参数名称:参数

我想知道在这种情况下是否有可能让应用程序抛出404而不是缺少参数exception。

谢谢!

更新以澄清我想要的是,此特定错误的所有情况都会抛出404错误而不是500错误。最好通过编写某种只捕获此错误的包装器。

public ActionResult Index(int? id) { if(!id.HasValue()) { throw new HttpException(404, "Are you sure you're in the right place?"); } } 

您正在寻找的是路线限制 。

这不是一篇新文章,我不能保证在最近的MVC版本中没有更好的方法,但我认为这是一个非常好的可能性:)

我相信你应该能够编写一个自定义模型绑定器,它将检查ID属性是否存在并且是必需的,如果它不存在则抛出404错误/拒绝绑定..我知道它不多,但它可能引导你以正确的方式:)

PS可以在此处找到示例模型绑定器及其工作原理:
http://weblogs.asp.net/melvynharbour/archive/2008/11/21/mvc-modelbinder-and-localization.aspx