加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何处理MVC3路由的空参数字典错误?

发布时间:2020-12-16 09:47:04 所属栏目:asp.Net 来源:网络整理
导读:我使用的大多数路由都基于标准MVC3应用程序中定义的默认路由: routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "Home",action = "Index",id = UrlParameter.Optional }); 但是,如果我的
我使用的大多数路由都基于标准MVC3应用程序中定义的默认路由:

routes.MapRoute(
                "Default",// Route name
                "{controller}/{action}/{id}",// URL with parameters
                new { controller = "Home",action = "Index",id = UrlParameter.Optional });

但是,如果我的路由是“/ Book / Update / 1”并且由于用户在没有1的情况下手动键入地址而保持“1”,则抛出空参数错误.显然我的路线需要这个1并且不是可选的,但我不会为我的每一个动作定义一个自定义路线.如果我打开自定义错误,我不确定这是什么类型的错误重定向到正确的HTML错误页面.

题:
我如何处理这个错误,就像404一样?我没有看到这种方法有任何问题,因为现实是在路线中留下ID号与未找到的404号相同.

或者我在设计路线时遗漏了什么?似乎很直接给我.

谢谢.

更新:
我很欣赏下面给出的答案.它们都是合理的方法.为了更清楚我的问题,让我详细说明一下.在我看来,“/ Book / Update / 1”的路线只有一个目的.更新书1.除此之外的任何其他偏差都应该失败并重定向到404.我不认为这与不存在的静态html页面有任何不同.我可能会争论一个不包含在.net中的功能,我只是觉得可能有更简单的方法.

UPDATE2:
应该挖得更深一些.有一个很好的例子here.我发现第二个答案最有帮助.

解决方法

public ActionResult Update(int? id)
{
    if (!id.HasValue) return HttpNotFound();

    //Debug.Assert(id.Value != null);
    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读