コントローラ名を分割したい。
例えば;
私のコントローラー名はFor_ExpController.csです
と
このようなURLが必要です。
http://localhost/For/Exp/Action
RouteConfig.csでどのように定義できますか?
コントローラ名を分割したい。
例えば;
私のコントローラー名はFor_ExpController.csです
と
このようなURLが必要です。
http://localhost/For/Exp/Action
RouteConfig.csでどのように定義できますか?
カスタムルートを書くことができます:
public class MyRoute: Route
{
public MyRoute()
: base(
"{part1}_{part2}/{action}",
new RouteValueDictionary(new { controller = "for_exp", action = "index" }),
new RouteValueDictionary(new { part1 = @"[a-z]+", part2 = @"[a-z]+" }),
new MvcRouteHandler()
)
{
}
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var rd = base.GetRouteData(httpContext);
if (rd == null)
{
return null;
}
var part1 = rd.GetRequiredString("part1");
var part2 = rd.GetRequiredString("part2");
rd.Values["controller"] = string.Concat(part1, "_", part2);
return rd;
}
}
Application_Start
これはあなたの:に登録されます
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add("MyRoute", new MyRoute());
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
}