Tôi đang thử tính năng mới của ASP.NET MVC 4 Mobile. Tôi đã thực hiện một ứng dụng đơn giản chỉ với một bộ điều khiển (HomeController) và một khung nhìn (Index). Tôi cũng đã thêm phiên bản di động của chế độ xem chỉ mục.Tính năng di động ASP.NET MVC 4
Views/Home/Index.cshtml
Views/Home/Index.Mobile.cshtml
Khi tung ra các ứng dụng trong một trình duyệt máy tính để bàn quan điểm thường xuyên được hiển thị như mong đợi, tuy nhiên khi tôi khởi động các ứng dụng trong Opera Mobile Emulator như Samsung Galaxy S, tôi vẫn nhận được cái nhìn bình thường và không phải là phiên bản di động.
chuỗi user agent được gửi từ các giả lập như sau:
Opera/9.80 (Windows NT 6.1; Opera Mobi/23731; U; en) Presto/2.9.201 Version/11.50
Bất kỳ ý tưởng về lý do tại sao điều này là không làm việc?
Cập nhật Nhờ @nemesv tôi đã có thể giải quyết vấn đề, đây là giải pháp hiện tại của tôi, hy vọng nó sẽ bao gồm hầu hết các trường hợp di động.
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);
}
}
Và tôi Global.asax
DisplayModeProvider.Instance.Modes.Insert(0, new MobileDisplayMode());
trình tiết kiệm cuộc sống. thực sự ngu ngốc của nó rằng hướng dẫn không nói điều này. Nó chỉ cảm thấy một nửa ass từ phía microsofts. Họ thường là điểm với hướng dẫn của họ. –
Cảm ơn, mặc dù StringCollection dường như là một trong những lớp học vô dụng nhất từ trước tới nay. Nó không chỉ cung cấp không có gì trong mẫu mã này, cũng không phải hiệu suất, bạn phải viết thêm mã (Cast) cho niềm vui của việc sử dụng nó. Thay thế nó bằng Danh sách và sống hạnh phúc mãi mãi sau –
PandaWood