새로운 ASP.NET MVC 4 모바일 기능을 사용해 보겠습니다. 나는 하나의 컨트롤러 (HomeController)와 하나의 뷰 (인덱스)로 간단한 앱을 만들었다. 인덱스보기의 모바일 버전도 추가했습니다. ASP.NET MVC 4 모바일 기능
Views/Home/Index.cshtml
Views/Home/Index.Mobile.cshtml
일반 뷰가 나는 삼성 갤럭시 S로
Opera Mobile Emulator에서 응용 프로그램을 시작할 그러나 때, 예상대로 표시됩니다 데스크톱 브라우저에서 응용 프로그램을 실행, 난 여전히 일반 뷰가 아닌 모바일 버전을 얻을.
에뮬레이터에서 보낸 사용자 에이전트 문자열은 다음과 같습니다 : 왜이 작동하지 않습니다에
Opera/9.80 (Windows NT 6.1; Opera Mobi/23731; U; en) Presto/2.9.201 Version/11.50
어떤 아이디어?
업데이트 덕분에 여기에 희망이 대부분의 모바일 시나리오를 다룰 것입니다, 내 현재의 솔루션입니다, 내가 문제를 해결할 수 있었다 @nemesv합니다.
public class MobileDisplayMode : DefaultDisplayMode
{
private readonly StringCollection _useragenStringPartialIdentifiers = new StringCollection
{
"Android",
"Mobile",
"Opera Mobi",
"Samsung",
"HTC",
"Nokia",
"Ericsson",
"SonyEricsson",
"iPhone"
};
public MobileDisplayMode() : base("Mobile")
{
ContextCondition = (context => IsMobile(context.GetOverriddenUserAgent()));
}
private bool IsMobile(string useragentString)
{
return _useragenStringPartialIdentifiers.Cast<string>()
.Any(val => useragentString.IndexOf(val, StringComparison.InvariantCultureIgnoreCase) >= 0);
}
}
그리고 내가 (실제로 HttpBrowserCapabilitiesBase
클래스)
DisplayModeProvider.Instance.Modes.Insert(0, new MobileDisplayMode());
생명의 은인. 자습서가 이것을 말하지 않는다는 것은 실제로 어리 석다. 마이크로 소프트 측에서 반쯤 엉덩이를 느낀다. 그들은 일반적으로 자습서를 사용합니다. –
감사합니다. StringCollection은 지금까지 쓸모없는 클래스 중 하나 인 것 같습니다. 이 코드 샘플이나 성능에서는 아무 것도 제공하지 않을뿐만 아니라 사용의 즐거움을 위해 추가 코드 (캐스트)를 작성해야합니다. 목록 으로 바꾸고 행복하게 살고 –
PandaWood