【问题标题】:How routing works with default controller and action in asp.net mvc路由如何与 asp.net mvc 中的默认控制器和操作一起使用
【发布时间】:2018-07-30 23:07:30
【问题描述】:

我是 ASP.NET MVC 的新手。所以我对路由有一些疑问。

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",               
            defaults: new { controller = "Your Controller", action = "Your Action", id = UrlParameter.Optional }
        );
    }
}

上面的代码提到了默认控制器和动作,但是当我们从 vs2013 ide 运行站点时,asp.net 引擎如何理解它必须显示默认控制器和动作?

当我们在 url 中提及控制器和动作名称时,asp.net 引擎如何理解从 url 加载提及控制器和动作,因为我们没有为所有控制器和动作定义路由。只是我们在路由中定义了默认的控制器和动作。

详细讨论。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    路由引擎尝试将实际 URL 与配置的路由形式之一匹配。在您的情况下,只有一个默认路由,因此它将查看尝试将其与 {controller}/{action}/{id} 模式匹配的 URL。这里的“默认”是指“如果没有提供,请使用这个”。所以在运行时,路由引擎会解析 URL 并检查路由的哪些部分实际给出,并用默认值替换那些没有的部分。

    几个例子:

    • example.com - 没有给出任何内容,对动作和控制器使用默认值
    • example.com/MyController - 给出了控制器,没有给出动作,使用默认值进行动作。请注意,使用此路由,没有控制器就无法指定操作。
    • example.com/MyController/MyAction - 控制器和动作都给出了,不要使用任何默认值
    • example.com/MyController/MyAction/123 - 与上面相同,但也指定了 id
    • example.com/MyController/MyAction/foo/bar - bar 不会匹配任何内容并导致错误

    【讨论】:

      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 2011-07-15
      • 2011-08-01
      • 2010-12-15
      • 1970-01-01
      • 2019-06-06
      • 2019-11-02
      • 1970-01-01
      相关资源
      最近更新 更多