저는 51Degrees (Lite)를 사용하여 장치를 감지하고 이에 따라 모바일 (.mobile.cshtml) 또는 데스크톱 ( .cshtml)보기를 선택한 MVC4 응용 프로그램이 있습니다. 51 일은 그 일을 제대로 할 수 있습니다. 그러나 HttpContext.SetOverriddenBrowser (BrowserOverride.Desktop)을 사용하여 모바일에서 데스크톱보기 (모바일 장치)로 전환하려는 경우 작동하지 않습니다. 참고로, 51Degrees없이 작동합니다. 여기뷰 스위치가 51Degrees와 호환되지 않습니다.
public class ViewSwitcherController : Controller
{
public RedirectResult SwitchView(bool mobile, string ReturnUrl="/Login/Login")
{
// If the mobile user has requested to view the mobile view
// remove any overridden user agent for the current request
if (Request.Browser.IsMobileDevice == mobile)
HttpContext.ClearOverriddenBrowser();
else
// Otherwise override the browser setting to desktop mode
HttpContext.SetOverriddenBrowser(mobile ? BrowserOverride.Mobile : BrowserOverride.Desktop);
return Redirect(ReturnUrl);
}
}
가있다 : 여기
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("mobile")
{ContextCondition = Context =>Context.Request.Browser["IsMobile"] == "True"
});
뷰 스위처 컨트롤러 동작 코드이다 : 여기
은 (Global.asax.cs에서 위해 Application_Start()) 디스플레이 모드를 선택하기위한 코드이고 데스크톱보기로 전환하는보기의 코드 :
@Html.ActionLink("Desktop view", "SwitchView", "ViewSwitcher", new { mobile = false, ReturnUrl = Request.Url.PathAndQuery }, new { rel = "external" })
내가 뭔가를 잃어버린 경우 알려주십시오. 지.
미리 감사드립니다.
해결책은 Context.GetOverriddenBrowser()를 사용하는 한 한 마디로해야합니다. – user2027901