假設我們想要將舊版本的asp.net web表單轉換爲mvc體系結構。 但有些用戶已將我們的網址加入書籤,或者他們已將其鏈接到其他網站。 現在我們不想鬆散那些urls.indd我們想創建一個管理舊類型的url的自定義路由。 此類從用戶獲取舊網址並創建新路線並將用戶重定向到新頁面。 這是我的自定義路由類:mvc自定義路由配置
public class LegacyRoute:RouteBase
{
private string[] urls;
public LegacyRoute(params string[] targetUrls)
{
urls = targetUrls;
}
public override RouteData GetRouteData(HttpContextBase httpContext)
{
RouteData result = null;
string requestedURL =
httpContext.Request.AppRelativeCurrentExecutionFilePath;
if (urls.Contains(requestedURL,StringComparer.OrdinalIgnoreCase))
{
result = new RouteData(this, new MvcRouteHandler());
result.Values.Add("controller", "Legacy");
result.Values.Add("action", "GetLegacyUrl");
result.Values.Add("legacyUrl", requestedURL);
}
return result;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
return null;
}
}
,這是我的RegisterRoutes功能:
public static void RegisterRoutes(RouteCollection routes)
{
// routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new LegacyRoute("~/articles/windows_3.1_Overview.html", "~/old/.NET_1.0_Class_Library"));
routes.MapRoute(null, "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
}
我也創造了 「遺產」 控制器 「GetLegacyUrl」 行動。 但是,當我在瀏覽器中運行的網站和鍵入
"localhost:14786/articles/windows_3.1_Overview.html"
我得到的404 Not Found錯誤。 問題在哪裏?爲什麼我得到這個錯誤?
非常感謝您的幫助。 –
請讓我知道它是否真的解決了您的問題,如果是這樣,標記我的答案是正確的:) –
不幸的是,它沒有。 –