我一直在处理一些有关路线的问题。我已经定义了路线,但我不断收到 404。以下是路线:
routes.MapRoute(
name: "Default",
url: "{controller}",
defaults: new { controller = "Login", action = "Login" }
);
routes.MapRoute(
name: "Home",
url: "{controller}/{Date}",
defaults: new { controller = "Home", action = "Home", Date = UrlParameter.Optional }
);
routes.MapRoute(
name: "Calendar",
url: "{controller}/{action}",
defaults: new { controller = "Calendar", action = "Index" }
);
routes.MapRoute(
name: "Act",
url: "{controller}",
defaults: new { controller = "Act", action = "New" }
);
localhost:51081/login works!
localhost:51081/Home/25.04.2013 works!
localhost:51081/act doesnt work!
localhost:51081/calendar/index doesnt work!
这里“登录”和“主页”有效,但“日历”和“操作”无效。当我将“日历”映射移动到顶部时,“主页”映射不起作用。你如何映射你的页面?
基本上我不希望操作名称出现在网址上,例如:http://localhost:51081/Home/Home/25.04.2013。
我希望看到它像http://localhost:51081/Home/25.04.2013 或 http://localhost:51081/calendar
最佳答案
就像 @MarcGravell 所说:您只需为异常(exception)情况添加特殊规则
在您的情况下,日历和主页的路线是相同的。 您可以通过将 {controller} 替换为 Home 来更具体地映射您的路线,因为该路线不是动态的并且实际上是一个异常(exception)(它忽略了操作)
routes.MapRoute(
name: "Home",
url: "Home/{Date}",
defaults: new { controller = "Home", action = "Home", Date = UrlParameter.Optional }
);
行动与日历相同,因此您不需要两条路线。只需调用 Act/New 而不是仅调用 Act。
对于默认使用:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Login", action = "Login" }
);
并将其放在偏离路线的底部。
关于c# - 尽管我绘制了路线,但仍然收到 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16216606/