【发布时间】: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