当缺少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