【发布时间】:2018-04-03 16:12:03
【问题描述】:
我的 ASP.NET MVC 应用程序中出现了一些路由问题。
假设我有 2 个控制器:
- 任务列表控制器
- 任务控制器
我不确定这是否矫枉过正,但我的目标是拥有如下 URL:
对于任务列表控制器:
- localhost:xxxx/tasklist/创建
- localhost:xxxx/tasklist/
- localhost:xxxx/tasklist/Details/1
- localhost:xxxx/tasklist/Edit/1
对于任务控制器:
- localhost:xxxx/tasklist/1/Task/Create
- localhost:xxxx/tasklist/1/Task
- localhost:xxxx/tasklist/1/Task/Details/11
- localhost:xxxx/tasklist/1/Task/Edit/11
我的路由设置如下:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "TaskListRoute",
url: "TaskList/{action}/{tasklistid}",
defaults: new { controller = "TaskList", action = "Index", tasklistid = UrlParameter.Optional }
);
routes.MapRoute(
name: "TaskRoute",
url: "TaskList/{tasklistid}/{controller}/{action}/{taskid}",
defaults: new { tasklistid = UrlParameter.Optional, controller = "Task", action = "Index", taskid = UrlParameter.Optional }
);
在调试应用程序时,我可以毫无问题地浏览 TaskList 控制器,但是当我在任务控制器上点击以下 url 时,我收到“找不到资源”错误:
http://localhost:xxxx/tasklist/1/Task
我必须像下面这样输入单词“索引”才能使该页面正常工作... http://localhost:xxxx/tasklist/1/Task/Index
上述url后面的方法签名是……
public class TaskController : Controller
{
// GET: Task
public ActionResult Index(int tasklistid)
{
//Some code here....
}
}
有什么想法我错了吗?感谢任何建议。
提前致谢。
【问题讨论】:
-
检查您注册路线的顺序。当前订单导致路由冲突,因为第一个正在消耗所有请求
-
感谢您的回复。我能够解决这个问题。我在下面发布我的解决方案,作为对上述特定问题的回答。
标签: asp.net-mvc routing url-routing