【问题标题】:How does MVC routing understands the URL?MVC 路由如何理解 URL?
【发布时间】:2011-07-02 02:46:35
【问题描述】:

Global.asax.cs 的初始化代码如下:

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

我要问的是,它怎么知道它为“{controller}”得到的将是要调用的 Controller 类的名称?是否在某处定义了令牌?如果可以,我可以列出它们吗?

如果我定义了额外的标记(如“{lang}”),它会假定它们是额外的参数吗?

(我正在开发一个自定义 URL 重写/重定向处理程序,我需要它来使用 MVC...)

为 URL 定义自定义模式和“别名”最实用的方法是什么?

【问题讨论】:

    标签: asp.net-mvc url url-rewriting asp.net-mvc-routing


    【解决方案1】:

    Mvc 运行时具有硬编码的控制器和操作令牌。此外还有“区域”,仅此而已。

    【讨论】:

    • 有我可以阅读的链接,还是“记录为代码”?
    【解决方案2】:

    @TDaver 如果我定义了额外的标记(如“{lang}”),它会假定它们是额外的参数吗?

    是的。例如,如果你定义了一个像 lang 这样的参数,它会检测到它。像这样想,它将是页面的名为 lang 的查询字符串字段。你可以为一个漂亮的 url 创建一个路由。如下所示;

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

    所以网址会像 ; http://example.com/en/home/about

    此外,路由最重要的部分是了解路由将按顺序选择。例如,如果您有多个与当前请求匹配的路由,则 MVC 框架将选择第一个路由。

    我建议你看看phil haccked's RouteDebugger

    您还可以为高级路由选项创建路由约束。

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 2011-02-22
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 2010-11-13
      相关资源
      最近更新 更多