2014-03-24 33 views

回答

0

這聽起來像MVC4一個已知的bug

有一個修復 - 升級到MVC5或安裝以下NuGet包: Install-Package Microsoft.AspNet.Mvc.FixedDisplayModes

進一步閱讀有關的NuGet包。 http://www.nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes

進一步閱讀有關的bug:http://forums.asp.net/t/1840341.aspxhttp://aspnetwebstack.codeplex.com/workitem/280

+0

我已經升級到MVC 5,但它仍然返回移動版本,以Ipad :( – MikeAlike234

4

我們可以通過將在全球Application_Start方法如下固定這一點。

DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode() 
{ 
    ContextCondition = (context => context.Request.UserAgent != null && context.GetOverriddenUserAgent().IndexOf("iPad", StringComparison.OrdinalIgnoreCase) >= 0) 
}); 

這告訴MVC使用iPad設備的默認視圖而不是移動視圖。

其實我們有配置文件中列出的「排除設備」列表。

// For each excluded device, set to use the default (desktop) view 
foreach (var excludedMobileDevice in ExcludedDevices) 
{ 
    DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode() 
    { 
     ContextCondition = (context => context.Request.UserAgent != null && context.GetOverriddenUserAgent().IndexOf(excludedMobileDevice, StringComparison.OrdinalIgnoreCase) >= 0) 
    ); 
} 

此外,在我們的應用程序,我們有一個要求禁用所有的通過一個單一的配置設置移動視圖(無需移除所有移動視圖文件)。這使我們能夠根據需要打開和關閉移動視圖。再次在Application_Start中,我們找到並刪除ID爲「Mobile」的顯示模式。

// Remove the built in MVC mobile view detection if required 
if (!MobileViewEnabled) 
{ 
    var mobileDisplayModeProvider = DisplayModeProvider.Instance.Modes.FirstOrDefault(d => d.DisplayModeId == "Mobile"); 

    if (mobileDisplayModeProvider != null) 
    { 
     DisplayModeProvider.Instance.Modes.Remove(mobileDisplayModeProvider); 
    } 
} 
相關問題