[英]ASP.NET MVC Routing not working well
我有点被ASP.NET MVC应用程序中的某些路由问题所阻塞。
让我们假设我有2个控制器:
我不知道这是否是矫kill过正,但我的目标是使URL如下:
对于TaskList控制器:
对于任务控制器:
我将路由设置如下:
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 /任务
为了使该页面正常工作,我必须像下面那样键入“索引”一词... http:// localhost:xxxx / tasklist / 1 / Task / Index
上面网址后面的方法签名是...
public class TaskController : Controller
{
// GET: Task
public ActionResult Index(int tasklistid)
{
//Some code here....
}
}
有什么想法我错了吗? 感谢任何建议。
提前致谢。
因此,在考虑了Nkosi的评论和NightOwl888的文章之后,我要做的就是将路由修改为如下所示:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "TaskRoute",
url: "TaskList/{tasklistid}/Task/{action}/{taskid}",
defaults: new { controller = "Task", action = "Index", taskid = UrlParameter.Optional }
);
routes.MapRoute(
name: "TaskListRoute",
url: "TaskList/{action}/{tasklistid}",
defaults: new { controller = "TaskList", action = "Index", tasklistid = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
}
基本上执行以下操作:
将路由调整为以下顺序:
在TaskRoute中,将“ {controller}”替换为“ Task”之类的文字,实际上是控制器的名称。
我希望这是正确的做法。
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.