【问题标题】:Default route problem默认路由问题
【发布时间】:2023-03-24 18:07:01
【问题描述】:

如果我想点击类似的网址 http://localhost:8080/controllername 我希望“索引”操作成为调用的默认操作。我假设默认路由映射会很好,并且将在指定的任何控制器上调用“索引”操作 - 似乎我需要指定 http://localhost:8080/controllername/index

这是正确的吗?

映射:

 routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

【问题讨论】:

  • 我们可以看看你的其他路线吗?也许其他人正在优先考虑?
  • 我已经设置了这个路由并且显示的访问这个路由的 url 是 localhost:4765 routes.MapRoute( "Default", // 路由名称 "{controller}/{action}/{id} ", // 带参数的 URL new { controller = "Customers", action = "Index", id = UrlParameter.Optional } // 参数默认值 );
  • @hoakney 我通常也使用相同的路线。我只有一个如上所述的路线映射并得到一个 404 我尝试访问 localhost:8080/cmslocalhost:8080/cms/index 相对应
  • @spender - 没有映射其他路线!
  • 您的服务器似乎有问题。据我所知,您正在运行自己的 IIS。尝试使用 VS 的开发服务器运行相同的应用程序,如果仍然遇到相同的问题,请报告。

标签: asp.net-mvc


【解决方案1】:

你正在尝试的东西肯定会奏效。事实上,您发布的代码来自默认模板,我刚刚通过向 AccountController 添加“Index”操作并在浏览器中访问 /Account 来测试它。

我建议创建一个新项目并测试此行为(首先使用内置 Web 服务器,然后使用 IIS,如果您不总是使用内置服务器)。如果它有效,则可能是您的项目中存在导致问题的不同之处。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,它是由于与项目中的目录发生冲突而发生的。我的项目中有这样的结构:

    Controllers \
                 HomeController.cs
                 CmsController.cs
    Cms \
         WhateverFile.cs
    

    Cms 子目录与/Cms URL 发生冲突,而Cms/Index 起作用。我只是重命名了我的冲突文件夹名称。如果必须保留它,可以使用RouteCollection.RouteExistingFiles 来防止自动查找文件。如果启用,我认为必须为脚本等添加很多排除项,请参阅this blog post 示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-12
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多