簡介:如何將Cookie值設置爲MapRoute參數的默認值?
我開發了多語言的web應用程序。管理員可以創建新的語言(這些信息存儲在數據庫中)。所以語言在代碼中沒有硬編碼。用戶的首選語言存儲在瀏覽器cookie中。
現在我想從這個配置URL路徑:
www.host.com/home/about
這樣:
www.host.com/{lang}/home/about
RouteConfig.cs樣子:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.LowercaseUrls = true;
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
foreach (Route r in routes)
{
r.Url = "{lang}/" + r.Url;
if (r.Defaults == null)
r.Defaults = new RouteValueDictionary();
r.Defaults.Add("lang", ServiceLocalization.GetLanguageFromBrowserCookie());
}
}
}
參數{}郎加到每個請求的網址。我需要從cookie中設置默認值。服務方法GetLanguageFromBrowserCookie()
使用HttpContext.Current.Request.Cookies
對象訪問客戶端發送的Cookie。
但是HttpContext.Current.Request
對象在請求處理管道的這個階段不可訪問。我得到這個錯誤:「請求在此上下文中不可用」
有沒有辦法使用cookie值獲取MapRoute參數?