【问题标题】:Use just Controller name as route仅使用控制器名称作为路由
【发布时间】:2015-07-18 09:25:41
【问题描述】:

我想通过该 URL 访问我的 NewsList 路由:http://domain.com/news

我有三个路线,例如:

routes.MapRoute(
    name: "NewsList",
    url: "News",
    defaults: new { controller = "News", action = "List" }
);

routes.MapRoute(
    name: "NewsDetail",
    url: "{controller}/{action}/{title}/{id}",
    defaults: new { controller = "News", action = "Details", title = "", id = 0 }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

我可以毫无问题地使用DefaultNewsDetail 路由,但是在当前配置下,我在下面提供的URL 无法访问NewsList 路由。当我尝试访问NewsList 路由时,我需要使用URL:http://domain.com/news/list

编辑:如果我使用 http://domain.com/news,我会在屏幕上看到 HTTP Error 403.14 - Forbidden 错误。

这种情况下可以忽略动作吗?

【问题讨论】:

  • 当你转到/news 时会发生什么?你所拥有的看起来不错。
  • 会发生什么?我看到“HTTP 错误 403.14 - 禁止”
  • 好的。这并不意味着您的路线不起作用。你被禁止的原因可能有很多。不过,这里还不足以帮助您。
  • 您还需要什么?我的控制器和动作名称与控制器中写的一样。你说它应该有效并且我的 NewsList 路由有效?
  • 是的。如果路由无效,您将收到 404 或其他操作。它被禁止的事实意味着它击中了 something,只是有一些其他问题。

标签: asp.net asp.net-mvc asp.net-mvc-routing


【解决方案1】:

确保您的项目中没有“新闻”目录。如果有,则优先,您将获得 403 以尝试列出目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    相关资源
    最近更新 更多