【问题标题】:ASP.NET MVC Routing giving dir listing at rootASP.NET MVC 路由在根目录列出目录
【发布时间】:2009-08-17 20:13:07
【问题描述】:

我有以下路线:

// 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 文件中定义的内容不匹配。然而,localhost/Index 确实给了我正确的观点。

奇怪的是,这在 Mono / XSP 上按预期工作。

【问题讨论】:

    标签: asp.net-mvc routing


    【解决方案1】:

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

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

    所以它对我有用。您可能遗漏了帖子中不明显的内容。

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

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

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

    【讨论】:

    • 至少为小费点赞。我想不出我错过的任何东西...... Mono 似乎很喜欢它。你能附上你的项目,这样我就可以在本地测试了吗?
    • Hrm ...存档未正确解压缩。
    • 哦,对不起,伙计。我只能在星期一重新上传(我现在在家,这里没有任何开发工具)。但我所做的是: 1. 创建默认的 MVC 应用程序。 2. 添加了您提供的 MainController。 3. 删除 Global.asax.cs 中的所有路由,并用您的路由替换它们。 4. 经过测试,它确实有效。
    【解决方案2】:

    我终于明白了。 (可能)有两件事出了差错。一、项目必须有MVC项目类型GUID。查看this 的想法 - 尽管该帖子的主题并不完全。二、Visual Studio 2008 需要 SP1 来更新 ASP.NET 开发服务器; SP1 之前的版本不会启动 Global.asax w/o Default.aspx 页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-22
      • 2015-02-01
      • 2011-08-23
      • 2013-06-03
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      相关资源
      最近更新 更多