ASP.NET MVC路由在根目录下提供目录列表

时间:2009-08-17 20:13:08

标签: asp.net-mvc routing

我有以下路线:

// 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等所有路由到MainController,它只是根据页面名称返回视图:

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

问题是,至少在测试期间,localhost /给出了一个目录列表而不是路由到Main / Index.aspx。真正的问题是它使我的SiteMap菜单失败,因为URL与Web.sitemap文件中定义的URL不匹配。但是,localhost / Index确实给了我正确的视图。

奇怪的是,这在Mono / XSP上可以正常工作。

2 个答案:

答案 0 :(得分:1)

如果您使用Visual Studio Dev Server进行测试,那么它应该工作。我刚才尝试过。

在IIS上,“localhost /”和“localhost / Index”都不起作用,除非你启用wildcard mapping

所以它对我有用。你可能遗漏了帖子中不明显的东西。

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

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

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

答案 1 :(得分:0)

我终于明白了。 (可能)有两件事情出错了。一,项目必须具有MVC项目类型GUID。查看this的想法 - 尽管帖子不是主题。二,Visual Studio 2008要求SP1用于更新的ASP.NET开发服务器; SP1之前的版本没有启动没有Default.aspx页面的Global.asax。