как отобразить вид по типу браузера в asp.net mvc? - PullRequest
0 голосов
/ 02 мая 2018

Я использую много CSS и JavaScript в своем проекте, которые не поддерживаются только браузером IE9,

, поэтому я создаю две версии для всех видов: первая версия для браузера IE, в которой нет css и javascript, и вторая версия для другого браузера, которая поддерживает все css и javascript.

Я хочу, если пользовательский браузер IE9 (только версия 9), тогда отображать первый вид, иначе отображать второй вид.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Вы должны использовать Custom DisplayMode в mvc и User-agent в браузерах.

В любом браузере есть уникальный пользовательский агент, для которого Internet Explorer 9 называется "MSIE 9".

если имя представления First.cshtml,

создать представление с именем: First.IE9.cshtml

и в global.asax

protected void Application_Start(){
//other code

DisplayModeProvider.Instance.Modes.Insert(0,new DefaultDisplayMode("IE9")
{
    ContextCondition=context=> context.request.UserAgent.Contains("MSIE 9")
});
}
0 голосов
/ 02 мая 2018

В вашем контроллере вы можете проверить свойство UserAgent запроса.

HttpContext.Current.Request.UserAgent

Пример полного кода:

private const string IEUserAgent = "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)";

public ActionResult Index()
{
    string userAgent = HttpContext.Current.Request.UserAgent;

    if (userAgent == IEUserAgent) 
    {
       return View("IE9View");
    }

    return View();
}

Возможно, вы захотите инкапсулировать строку (и) UserAgent в файл констант, который будет обслуживать более подходящее место, а не на уровне контроллера.

Альтернативным подходом было бы использование DisplayModeProvider в Global.asax

DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("IE9")  
{  
    ContextCondition = (ctx => ctx.GetOverriddenUserAgent()  
    .IndexOf("MSIE 9", StringComparison.OrdinalIgnoreCase) > 0)     
});  

Затем вы должны создать файл Index.IE9.cshtml в разделе View вашего приложения, содержащий разметку для отображения пользователям, использующим Internet Explorer 9.

...