Использование Javascript, если еще внутри страницы MVC .cshtml.

1

Есть ли способ использовать if else statment внутри страницы MVC cshtml

 <div class="primary-content">
            if(DetectIE())
            {
            <embed data-bind="attr: { src: data.files()[currentPage()] + '#toolbar=0&amp;navpanes=0&amp;scrollbar=0' }" type="application/pdf" style="width: 100%; height: 800px !important;">
            }
            else
            {
            <object data-bind="attr: { data: data.files()[currentPage()] + '#toolbar=0&amp;navpanes=0&amp;scrollbar=0' }" type="application/pdf" width="100%" height="600px"></object>
            }
        </div>

У меня есть код javascript, чтобы определить, является ли текущий браузер Internet Explorer или нет. Если это IE, то используется тег <embed> иначе используется тег <object>.

Любые предложения или помощь будут оценены.

заранее спасибо

  • 0
    Просто используйте @if (DetectIE()) { // embed tag } else { // object tag } . Но что DetectIE() ?
  • 0
    DetectIEit - это метод javascript для обнаружения Internet Explorer.
Показать ещё 4 комментария
Теги:
razor
asp.net-mvc

2 ответа

1
Лучший ответ

Поскольку DetectIE() является функцией JS, вы не можете использовать ее для сравнения с блоком Razor @if. Вы должны поместить его внутри <script> с помощью jQuery.append() чтобы добавить соответствующий тег в целевой элемент:

<script>
$(function() {
    // other stuff

    if (DetectIE())
    {
        $('#targetElement').append("<embed data-bind=\"attr: { src: data.files()[currentPage()] + '#toolbar=0&amp;navpanes=0&amp;scrollbar=0' }\" type=\"application/pdf\" style=\"width: 100%; height: 800px !important;\">");
    }
    else
    {
        $('#targetElement').append("<object data-bind=\"attr: { data: data.files()[currentPage()] + '#toolbar=0&amp;navpanes=0&amp;scrollbar=0' }\" type=\"application/pdf\" width=\"100%\" height=\"600px\"></object>");
    }
});
</script>

Пример целевого элемента:

<div id="targetElement" class="primary-content"></div>

Если вы хотите проверить любую версию IE со стороны контроллера, вы можете использовать это:

bool isIE = (Request.Browser.Browser == "IE" || Request.Browser.Browser == "InternetExplorer");

Затем передайте значение ViewBag:

ViewBag.IsIE = isIE;

Пример использования JS

if (@ViewBag.IsIE)
{
   // render embed tag
}
else
{
   // render object tag
}
0

Вы не можете использовать функцию javascript внутри razor напрямую. Так что bettter использует Request.Browser для получения имени пользователя

@{bool IsIE = false ;
if (Request.Browser.Type.ToUpper().Contains("IE"))
{ 
    IsIE = true;
}

}
@if (IsIE)
{
    // Your Razor here
}
else
{
    //  Your Razor here
}
  • 1
    Мой метод является методом JavaScript

Ещё вопросы

Сообщество Overcoder
Наверх
Меню