检测移动浏览器并重定向

时间:2013-01-13 18:51:10

标签: c# redirect mobile

我想使用我的.cs代码隐藏,Page_PreInit或Page_Load来检测移动浏览器和重定向。我碰到了这个:

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    if (Request.Browser.IsMobileDevice) 
    { 
        { 
          Response.Redirect("~/default_mobile.aspx"); 
        }

    } 
} 

它似乎不起作用。有人可以建议更正?另外,你知道一个NOT重定向的例子,但只是用另一个替换.aspx页面上的元素(即用一个iOS设备的静止图像替换一个Silverlight电影。)

2 个答案:

答案 0 :(得分:2)

This MSDN document说明了如何在.IsMobileDevice的上下文中使用Page_Load。根据您的需求调整它应该是微不足道的。

同时检查this other answer

51Degrees,一个检测移动设备和浏览器的类库,增强了.NET可用的信息。

答案 1 :(得分:0)

在项目中添加一个全局应用程序类,并在Session_Start

中编写代码
protected void Session_Start(object sender, EventArgs e)
{

            HttpRequest httpRequest = HttpContext.Current.Request;
            if (httpRequest.Browser.IsMobileDevice)
            {
                string path = httpRequest.Url.PathAndQuery;
               bool isOnMobilePage = path.StartsWith("/Mobile/",
                                                      StringComparison.OrdinalIgnoreCase);
                if (!isOnMobilePage)
                {
                    string redirectTo = "~/Mobile/";

                    // Could also add special logic to redirect from certain 
                    // recognised pages to the mobile equivalents of those 
                    // pages (where they exist). For example,
                    // if (HttpContext.Current.Handler is UserRegistration)
                    //     redirectTo = "~/Mobile/RegistrationMobile.aspx";

                    HttpContext.Current.Response.Redirect(redirectTo);
                }
            }   
        }