我想使用我的.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电影。)
答案 0 :(得分:2)
This MSDN document说明了如何在.IsMobileDevice
的上下文中使用Page_Load
。根据您的需求调整它应该是微不足道的。
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);
}
}
}