2
메소드 UrlHelper.GenerateUrl이() 나는 Html.BeginForm에 Url.Action에서 모든 것을()에 영향을주는 다른 구현을 필요 ASP.NET MVC 프레임 워크에서 UrlHelper.GenerateUrl()을 재정의 할 수 있습니까?
System.Web.Mvc.UrlHelper
에 있습니다().이 현재 .NET 구현입니다 : 다른 클래스가 사용에서 나는 그것의 가능한 대리자를 사용하여 정적 메소드를 오버라이드 (override)하는 것을 알고
[SuppressMessage("Microsoft.Design", "CA1055:UriReturnValuesShouldNotBeStrings", Justification = "As the return value will used only for rendering, string return value is more appropriate.")]
public static string GenerateUrl(string routeName, string actionName, string controllerName, string protocol, string hostName, string fragment, RouteValueDictionary routeValues, RouteCollection routeCollection, RequestContext requestContext, bool includeImplicitMvcValues) {
string url = GenerateUrl(routeName, actionName, controllerName, routeValues, routeCollection, requestContext, includeImplicitMvcValues);
if (url != null) {
if (!String.IsNullOrEmpty(fragment)) {
url = url + "#" + fragment;
}
if (!String.IsNullOrEmpty(protocol) || !String.IsNullOrEmpty(hostName)) {
Uri requestUrl = requestContext.HttpContext.Request.Url;
protocol = (!String.IsNullOrEmpty(protocol)) ? protocol : Uri.UriSchemeHttp;
hostName = (!String.IsNullOrEmpty(hostName)) ? hostName : requestUrl.Host;
string port = String.Empty;
string requestProtocol = requestUrl.Scheme;
if (String.Equals(protocol, requestProtocol, StringComparison.OrdinalIgnoreCase)) {
port = requestUrl.IsDefaultPort ? String.Empty : (":" + Convert.ToString(requestUrl.Port, CultureInfo.InvariantCulture));
}
url = protocol + Uri.SchemeDelimiter + hostName + port + url;
}
}
return url;
}
하지만이 방법을 모두 허용하지 않습니다 같은 방법으로 호출 내 구현 대신 기본 구현.
그것은 광범위한 생각 후에 내 결론이었습니다. 새로운 라우팅 메커니즘. 좋은 예가 있습니다 : http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx – Korayem