当前位置:  开发笔记 > 编程语言 > 正文

为什么这个MVC路由不起作用?

如何解决《为什么这个MVC路由不起作用?》经验,为你挑选了1个好方法。

这是我的global.asax文件中的两个路由.我正在尝试进入第二条路线,我收到一个默认的404资源未找到错误.

当我删除第一条路线(在此示例中列出)时,它可以工作.

我该如何解决这个问题?

global.asax代码片段

// GET: /user/PureKrome/Alert/69
routes.MapRoute(
    "User-Alert-Details",
    "user/{displayName}/alert/{alertId}",
    new { controller = "Account", action = "AlertDetails", alertId = 0 });

// GET: /user/PureKrome/Alert/create
routes.MapRoute(
    "User-Alert-Create",
    "user/{displayName}/alert/create",
    new { controller = "Account", action = "AlertCreate" });

Erv Walter.. 20

您的第一条路线是"贪婪"路线,并乐意接受"创建"作为最后一个参数中的alertId.看来您希望alertId参数仅为数字,因此您应该添加一个约束来告诉路由系统该最后一个参数必须是数字.

请参阅本教程.

例如:

// GET: /user/PureKrome/Alert/69
routes.MapRoute(
    "User-Alert-Details",
    "user/{displayName}/alert/{alertId}",
    new { controller = "Account", action = "AlertDetails", alertId = 0 },
    new { alertId = @"\d+" });

// GET: /user/PureKrome/Alert/create
routes.MapRoute(
    "User-Alert-Create",
    "user/{displayName}/alert/create",
    new { controller = "Account", action = "AlertCreate" });

请注意,您也可以反转路径的顺序,但即使您这样做,如果希望alertId始终为数字,仍应包含正确性约束.



1> Erv Walter..:

您的第一条路线是"贪婪"路线,并乐意接受"创建"作为最后一个参数中的alertId.看来您希望alertId参数仅为数字,因此您应该添加一个约束来告诉路由系统该最后一个参数必须是数字.

请参阅本教程.

例如:

// GET: /user/PureKrome/Alert/69
routes.MapRoute(
    "User-Alert-Details",
    "user/{displayName}/alert/{alertId}",
    new { controller = "Account", action = "AlertDetails", alertId = 0 },
    new { alertId = @"\d+" });

// GET: /user/PureKrome/Alert/create
routes.MapRoute(
    "User-Alert-Create",
    "user/{displayName}/alert/create",
    new { controller = "Account", action = "AlertCreate" });

请注意,您也可以反转路径的顺序,但即使您这样做,如果希望alertId始终为数字,仍应包含正确性约束.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有