【问题标题】:MVC Changing a URL routeMVC 更改 URL 路由
【发布时间】:2013-04-21 04:24:13
【问题描述】:

我刚刚看了关于 ASP.NET MVC 3 中的 URL 路由的 Pluralsight 视频。我还是有点困惑。

该图片显示了我的视图是如何设置的。每个视图都有一个控制器。也许我误解了一些东西,但是当我这样做时,我想通过添加 Portfolio 视图和控制器而不是转到 /home/portfolio 它只会带我到 /portfolio 但它没有。现在,当我点击投资组合链接时,它会将我带到 /portfolio/portfolio。

我对路由在 ASP.NET 中的工作方式有误解,还是我只是忘记了什么?

【问题讨论】:

    标签: c# asp.net-mvc url view asp.net-mvc-routing


    【解决方案1】:

    将操作和视图重命名为索引。

    【讨论】:

      【解决方案2】:

      它会将您带到Portfolio/Portfolio,因为这是您命名设置的方式。第一个是您的控制器的名称(名称中没有控制器)PortfolioController。第二个是您的ActionResultPortfolio 的名称,它返回Portfolio.cshtml。如果您只想看到/Portfolio,您可以随时使用PortfolioController

      public ActionResult Index(){ return View(); }
      

      然后将Portfolio.cshtml 重命名为Index.cshtml,然后您就可以开始了。

      【讨论】:

      • 好的,现在可以了,我只需要弄清楚如何更改 _Layout.cshtml 中的 ActionLink 以指向该新链接,因为它指向旧的 /Portfolio/Portfolio
      【解决方案3】:

      当您拥有 localhost/portfolio 时,您将调用投资组合的默认操作,默认情况下为 Index,您将看到该视图,因为您没有该视图,您可以创建一个 您可以通过 /portfolio/portfolio

      在您的投资组合控制器中访问您的投资组合操作

      因为它遵循 app_start 文件夹中 routConfig.cs 中的默认路由

      如果你想通过 /portfolio 获得与 /portfolio/portfolio 相同的结果,你可以在你的 routeconfig 中添加这样的路由

       routes.MapRoute(
                  name: "portfolio",
                  url: "portfolio/{action}",
                  defaults: new { Controller = "portfolio", Action = "portfolio" }
                  );
      

      注意在默认路由之前写,因为当它匹配第一个路由时,它不会检查其他的

      对不起,我的英语不好

      【讨论】:

        猜你喜欢
        • 2014-02-15
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-03
        • 1970-01-01
        • 2014-04-23
        相关资源
        最近更新 更多