代码之家  ›  专栏  ›  技术社区  ›  xanadont

在根目录下给出目录列表的ASP.NET MVC路由

  •  1
  • xanadont  · 技术社区  · 15 年前

    我有以下路线:

    // Submission/*
    routes.MapRoute(
        "Submission",
        "Submission/{form}",
        new { controller = "Submission", action = "Handle", form = "" });
    
    // /<some-page>
    routes.MapRoute(
        "Pages",
        "{page}",
        new { controller = "Main", action = "Page", page = "Index" });
    

    第一条路线的请求完全符合 this 问题。第二个通常路由一组静态内容页。例如localhost/help、localhost/contact等,所有路由到主控制器,主控制器只根据页面名称返回视图:

    public class MainController : Controller
    {
        public ActionResult Page()
        {
            var page = (string)RouteData.Values["page"];
            return View(page);
        }
    }
    

    问题是,至少在测试期间,localhost/给出了dir列表,而不是路由到main/index.aspx。真正的问题是它会破坏我的站点地图菜单,因为URL与web.sitemap文件中定义的不匹配。然而,localhost/index确实提供了正确的视图。

    奇怪的是,它在mono/xsp上的工作与预期一致。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Dmytrii Nagirniak    15 年前

    如果您使用的是Visual Studio开发人员服务器,那么它应该可以工作。我刚才试过了。

    在IIS上,“localhost/”和“localhost/index”都不能工作,除非启用 wildcard mapping

    所以它对我很有用。你可能遗漏了一些不明显的东西。

    顺便说一句,你的行动可以改进:

    public ActionResult Page(string page)
    {
        return View(page);
    }
    

    编辑: Here 是我的示例项目。

        2
  •  0
  •   xanadont    15 年前

    我终于明白了。有两件事(可能)出错了。第一,项目必须具有MVC项目类型guid。退房 this 一个想法-尽管这篇文章不是很有主题。第二,Visual Studio 2008需要一个更新的ASP.NET开发服务器的SP1;它在SP1之前的版本没有启动global.asax,没有默认的.aspx页面。