定义自定义路由asp.net mvc5

时间:2018-10-03 17:09:18

标签: asp.net asp.net-mvc-5

我想在asp.net mvc应用程序中分配一条路由。

我有一个测量控制器。在业务场景中,我有3种类型的Measurement。

  1. 上衣
  2. Lhenga
  3. Pardi

由于我希望该网址类似于 Measurement / Create / Lhenga

就是这样,我想创建度量/创建/衬衫度量/创建/ Pardi 路线。

尽管我知道我将不得不在RouteConfig.cs类中编写一条路由。 我写了

 routes.MapRoute(
            "MeasurementRoute",
            "{controller}/{action}/{type}/"
            );

1 个答案:

答案 0 :(得分:1)

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

     routes.MapRoute(
      name: "Contact",
      url: "Contact",
      defaults: new {
       controller = "Contact", action = "Address"
      });

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

每个MVC应用程序都必须配置(注册)至少一条路由,该路由默认是由MVC框架配置的

您还可以使用MapRoute扩展方法配置自定义路由。您需要在MapRoute中至少提供两个参数,即路由名称和url模式。 Defaults参数是可选的。 您可以注册多个具有不同名称的自定义路由。考虑下面的示例,我们在其中注册“联系”路线。

如上面的代码所示,Contact路由的URL模式为Contacts / {id},它指定任何以domainName / Contacts开头的URL必须由ContactController处理。注意,我们没有在URL模式中指定{action},因为我们希望每个以Contact开头的URL都应始终使用ContactController的Index操作。我们指定了默认的控制器和操作来处理任何以域名/联系人开头的URL请求。

MVC框架按顺序评估每个路由。它从第一个配置的路由开始,如果传入的URL不满足该路由的URL模式,则它将评估第二个路由,依此类推。在上面的示例中,路由引擎将首先评估Contact路由,如果传入的网址不是以/ Contacts开头,那么它将仅考虑第二个路由,即默认路由

相关问题