【问题标题】:ASP.NET MVC3 sample project removing home folder删除主文件夹的 ASP.NET MVC3 示例项目
【发布时间】:2012-04-20 23:49:53
【问题描述】:

我正在使用 ASP.NET MVC3 示例项目,并希望将新链接添加到直接转到根 url 的页面 所以不是 mydomain.com/Home/About 而是 mydomain/About。

此页面建议添加一条新路线。 http://weblogs.asp.net/gunnarpeipman/archive/2011/04/17/asp-net-mvc-defining-short-urls-for-root-level-pages.aspx

还有其他方法吗?假设我有 5 个页面将在根目录上,我是否必须为每个页面添加一个特殊的路由?

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    假设您希望执行一系列单路径请求/响应,而不仅仅是重定向主控制器操作,那么这是一个选项。

    您提供的链接是 一种 方式来做到这一点。另一种是使用默认路由创建5个控制器。我不确定我是否会建议任何一个更好(由于缺乏你的 5 条路径实际上是什么),但它们都会产生相同的结果。如果您的默认路线如下所示:

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

    基本上是说默认控制器是home,默认动作是index。这些值不是相互包含的,这意味着两者都不需要另一个才能成为默认值。

    你可以这样做:

    website.com/about

    public AboutController
    {
      public ActionResult index()
      {
        return this.View();
      }
    }
    

    和/或 website.com/people

    public PeopleController
    {
      public ActionResult index()
      {
        return this.View();
      }
    }
    

    【讨论】:

    • 对于 PeopleController 示例,这意味着每个根页面都必须有自己的文件夹和 index.aspx。我做对了吗?当我说有没有更好的方法时,我指的是更改默认路由。因此,只需拆除房屋并将所有内容提升一个层次。我仍然有 mydomain.com/Products 和 mydomain.com/Products/Product1 等子页面
    • 我的示例并没有以任何方式阻止您在默认路由中创建具有超出默认操作的更多操作的其他控制器,因此/Products/Products/Product 仍然可用。
    • 是的,我并不是说你的方法行不通,我只是澄清一下我的情况。但是我觉得为根页面添加一个新的路由会更干净,因为我不需要为每个页面创建一个文件夹。感谢您花时间回答。
    猜你喜欢
    • 2018-05-24
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    相关资源
    最近更新 更多