2010-03-17 97 views
1

我正在开发一个多语种的网站。我通过查询字符串变量确定所需的语言,例如:http://mydomain.com/default.aspx?lang=enASP.Net Web窗体LoginStatus多个LoginURL - 建议?

我在母版页中使用了两个<asp:LoginStatus />控件。我的web.config文件是这样设置的,用于表单身份验证。

<authentication mode="Forms"> 
    <forms loginUrl="~/login.aspx" protection="All" timeout="30" 
    name=".ASPXAUTH" path="/" requireSSL="false" 
    slidingExpiration="true" 
    defaultUrl="default.aspx" 
    cookieless="UseDeviceProfile" 
    enableCrossAppRedirects="false"/> 
</authentication> 

目前,当你点击一个<asp:LoginStatus />你将被重定向到我的登录页面和URL会是这个样子:http://mydomain.com/login.aspx?ReturnUrl=%2fdefault.aspx%3flang%3den

什么解决方案提供给我,让我可以追加我的LANG变量到我的login.aspx?取决于哪种语言目前处于活动状态?

回答

1

login.aspx的代码隐藏可以HttpServerUtility.UrlDecodeRETURNURL变量。然后使用HttpUtility.ParseQueryString()获取lang参数。

例如,

HttpUtility.ParseQueryString(HttpUtility.UrlDecode(Request.Params["ReturnUrl"])); 

当然,在现实生活中你会检查,如果该请求变量甚至存在

HttpUtility.ParseQueryString()

HttpUtility.UrlDecode()

+0

这是非常好的。作品一种享受。谢啦! – TGuimond 2010-03-17 18:19:57

+0

没问题,随时。 – kervin 2010-03-17 18:37:47