コントローラ名を「My_Controller」として設定しています。URLをwww.mysite.com/My_Controller/My_Action から www.mysite.com/my-controller/my-action/に変更する方法を探しています。
URLリライター拡張機能を使用せずにこれを行う方法はありますか?もしそうなら、どのように?
コントローラ名を「My_Controller」として設定しています。URLをwww.mysite.com/My_Controller/My_Action から www.mysite.com/my-controller/my-action/に変更する方法を探しています。
URLリライター拡張機能を使用せずにこれを行う方法はありますか?もしそうなら、どのように?
ルートハンドラーを使用できます。
public class HyphenatedRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
requestContext.RouteData.Values["controller"] = requestContext.RouteData.Values["controller"].ToString().Replace("-", "_");
try
{
requestContext.RouteData.Values["action"] = requestContext.RouteData.Values["action"].ToString().Replace("-", "_");
}
catch { }
return base.GetHttpHandler(requestContext);
}
}
..そしてそれを次のようにルートに追加します:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
).RouteHandler = new HyphenatedRouteHandler();
これは、「Example_Action」というアクションを持つ「Example_Controller」という名前のコントローラーがある場合はいつでも、/ example-controller/example-actionを使用して呼び出すことができることを意味します。