2013-10-26 32 views
1

我正在寻找一种方法来设置HttpContext.Current.Request.Browser.IsMobileDevice为真的自定义移动设备不受MVC4和51degrees.mobi,这也是应用程序中使用dedected。如何覆盖Browser.IsMobileDevice是ASP.NET MVC4应用程序?

我在Global.asax.cs中尝试这样做:

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e) 
{ 
    HttpContext.Current.Request.Browser.IsMobileDevice = true; 
} 

但我得到一个编译错误:

Property or indexer 'System.Web.Configuration.HttpCapabilitiesBase.IsMobileDevice' cannot be assigned to -- it is read only

51degrees.mobi,jQuery的,jQuery的UI和jQuery UI的移动被使用。

回答

3

该属性由客户端向服务器发送的请求设置,以便您检查服务器上的浏览器用户代理,这就是为什么不允许更改。

如果要改变用户的代理,需要添加此行的服务器上:如果你知道你可以手动设置的用户代理

HttpContext.SetOverriddenBrowser(BrowserOverride.Mobile); 

HttpContext.SetOverriddenBrowser("Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7"); 

要清除覆盖你需要:

HttpContext.ClearOverriddenBrowser(); 

看看这个page。或者如何在mvc中覆盖默认显示模式link

+0

谢谢。如果将51degrees.mobi模块添加到应用程序中,它将IsMobileDevice设置为true,以用于其他受到限制的设备。为什么不允许从我的应用程序中更改它? – Andrus

+0

基本上他们所做的是覆盖默认的.net功能。 http://51degrees.mobi/Support/Documentation/NET/WebApplications/RequestBrowserOverwrites.aspx – hjgraca

+0

它们提供了一个像mvc一样的浏览器用户代理列表,但它们的列表更新鲜。 – hjgraca

相关问题