Вы можете использовать пользовательский обработчик маршрута, чтобы предоставить вам необходимую функциональность:
public class HyphenatedRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
requestContext.RouteData.Values["controller"] = requestContext.RouteData.Values["controller"].ToString().Replace("-", "_");
requestContext.RouteData.Values["action"] = requestContext.RouteData.Values["action"].ToString().Replace("-", "_");
return base.GetHttpHandler(requestContext);
}
}
И маршрут должен быть зарегистрирован с использованием этого обработчика:
var route = routes.MapRoute(
"Some Action",
"{controller}/{action}/{id}"
);
route.RouteHandler = new HyphenatedRouteHandler();
Здесь задается аналогичный вопрос: Поддержка ASP.net MVC для URL с дефисами