【问题标题】:MVC Route not being used when it shouldMVC 路由在它应该被使用的时候没有被使用
【发布时间】:2013-09-24 16:52:41
【问题描述】:

我正在开发一个应用程序,我希望像 User\1\Class\Create 这样的 url 会映射到 Class 控制器和 Create 操作,但是当我应用它时,它不会拾取它。

以下是我如何注册路线(位于列表顶部):

routes.MapRoute(
            name: "UserClass",
            url: "User/{userId}/Class/Create",
            defaults: new { controller = "Class", action = "Create", userId= "" },
            constraints: new { userId= @"\d+" }
            );

(我也试过省略userId=""默认值)

这与此代码配对:

public class ClassController : BaseController
{
    public ActionResult Create(int userId)
    {
        var vm = new ClassEditorViewModel
        {
            Class = new Class { UserId = userId },
            ClassEnrollmentStatuses = new SelectList(Db.ClassEnrollmentStatuses.ToList(), "Id", "Name")
        };

        return View(vm);
    }
}

但这不起作用。当我使用 Route Debugger(由 Phil Haack 编写)时,它不使用上述路由并选择 {*catchall} 路由。

我在路由配置上做错了什么使其无法使用?

【问题讨论】:

  • 你的路线顺序是什么?这条路线是否在默认路线的顶部?
  • 您是直接导航到 User/1/Class/Create 还是单击已创建的链接。如果是后者,你是如何创建 URL 的?
  • @Andrey.Gubal 这条路线在列表的顶部,最具体到最不具体的是我如何订购它们。
  • @asymptoticFault 当它失败时,我实际上是在导航到 url
  • 有趣,我刚试了一下,效果很好。

标签: c#-4.0 asp.net-mvc-4 routes


【解决方案1】:

删除路由并重新输入解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多