GetVirtualPath
메서드를 재정의하는 새 경로를 만들 수 있습니다. 이 방법에서는 후행 슬래시를 VirtualPath
에 추가합니다. 이처럼 : 간결함을 위해
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
VirtualPathData path = base.GetVirtualPath(requestContext, values);
if (path != null)
path.VirtualPath = path.VirtualPath + "/";
return path;
}
내가 지금 당신이해야 할 모든 routes.MapRouteTrailingSlash()
대신 routes.MapRoute()
과 경로를 등록 할 수있는 whole example on CodePaste.net
을 기록했다. GetVirtualPath()
가 호출 될 때
routes.MapRouteTrailingSlash("register",
"register",
new {controller = "Users", action = "Register"}
);
경로는 다음 경로에 슬래시를 추가합니다. 어느 RedirectToAction()
할 것입니다.
업데이트 : CodePaste 링크가 다운 있기 때문에, 여기에 전체 코드 :
public class TrailingSlashRoute : Route {
public TrailingSlashRoute(string url, IRouteHandler routeHandler)
: base(url, routeHandler) {}
public TrailingSlashRoute(string url, RouteValueDictionary defaults, IRouteHandler routeHandler)
: base(url, defaults, routeHandler) {}
public TrailingSlashRoute(string url, RouteValueDictionary defaults, RouteValueDictionary constraints,
IRouteHandler routeHandler)
: base(url, defaults, constraints, routeHandler) {}
public TrailingSlashRoute(string url, RouteValueDictionary defaults, RouteValueDictionary constraints,
RouteValueDictionary dataTokens, IRouteHandler routeHandler)
: base(url, defaults, constraints, dataTokens, routeHandler) {}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) {
VirtualPathData path = base.GetVirtualPath(requestContext, values);
if (path != null)
path.VirtualPath = path.VirtualPath + "/";
return path;
}
}
public static class RouteCollectionExtensions {
public static void MapRouteTrailingSlash(this RouteCollection routes, string name, string url, object defaults) {
routes.MapRouteTrailingSlash(name, url, defaults, null);
}
public static void MapRouteTrailingSlash(this RouteCollection routes, string name, string url, object defaults,
object constraints) {
if (routes == null)
throw new ArgumentNullException("routes");
if (url == null)
throw new ArgumentNullException("url");
var route = new TrailingSlashRoute(url, new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(defaults),
Constraints = new RouteValueDictionary(constraints)
};
if (String.IsNullOrEmpty(name))
routes.Add(route);
else
routes.Add(name, route);
}
}
ASP.NET Core에서이 작업을 수행하는 방법에 관심이있는 사람은'services.Configure (routeOptions => {routeOptions.AppendTrailingSlash = true;};,'services'는'IServiceCollection'입니다. –
Galilyou