У меня есть действие в контроллере, которое выглядит следующим образом
public ActionResult Transactions(string type) {}
Чтобы получить доступ к этому контроллеру и передать значение свойства типа, я должен набрать
www.mysite / контроллер / транзакции? Тип = SomeType
но я хочу передать что-то вроде этого
www.mysite.com / контроллер / операции / SomeType
Таким образом, я создаю параметр конфигурации маршрута в файле RouteConfig.cs следующим образом
routes.MapRoute(
name: "TransactionRoute",
url: "user/transactions/{type}",
defaults: new { controller = "user", action = "transactions", type = "made" },
constraints: new { title = @"^[A-Za-z]+$" }
);
но теперь, если я передам такой URL
www.mysite.com / контроллер / сделки / сделано
значение типа строки в действии равно нулю
Мне разрешено делать это или я сделал что-то не так?
Вот мой файл routeconfig.cs
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "TransactionRoute",
url: "user/transactions/{type}",
defaults: new {
controller = "user", action = "transactions", type = "made"
},
constraints: new {
title = @ "^[A-Za-z]+$"
}
);
routes.MapRoute(
name: "RateRoute",
url: "rate/event/{id}",
defaults: new {
controller = "rate", action = "event"
},
constraints: new {
id = @ "\d+"
}
);
routes.MapRoute(
name: "ReviewRoute",
url: "rate/review/{id}",
defaults: new {
controller = "rate", action = "review"
},
constraints: new {
id = @ "\d+"
}
);
routes.MapRoute(
name: "SpaceCleanRoute",
url: "space/{id}",
defaults: new {
controller = "space", action = "index", id = UrlParameter.Optional
},
constraints: new {
id = @ "\d+"
}
);
routes.MapRoute(
name: "SpacePendingRoute",
url: "space/{id}/{pending}",
defaults: new {
controller = "space", action = "index", pending = UrlParameter.Optional
},
constraints: new {
id = @ "\d+"
}
);
routes.MapRoute(
name: "PublicSpaceRoute",
url: "space/public/{title}",
defaults: new {
controller = "space", action = "public"
},
constraints: new {
title = @ "^[A-Za-z0-9-]+$"
}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home", action = "Index", id = UrlParameter.Optional
}
);
}