ASP.NET MVC2 - обнаружение JavaScript, сохранение результата в переменной сеанса - PullRequest
0 голосов
/ 19 августа 2010

Я хочу визуализировать определенный HTML в частичном представлении в зависимости от того, включен JavaScript или нет.Моя идея заключалась в том, чтобы как-то определить, был ли включен javascript и сохранить его в переменной сеанса, которую я затем смогу проверить, например,

<div class="product">
<%
    // if Javascript is enabled, load the images asynchrously, otherwise load them directly.
    string imgHtml = "<img id=\"myImage\" src=\"{0}\" alt=\"MyImage\" />";
    if ((bool)Session["jsEnabled"])
       imgHtml = String.Format(imgHtml, Url.Content("~/Content/images/ajax-loader.gif") + "\" onload=\"loadImageAsync(this, '" + Url.Content("~/Content/images/" + Model.thumbnail) + "')");
   else
       imgHtml = String.Format(imgHtml, Url.Content("~/Content/images/image.jpg")); 
%>

    <div><%= imgHtml %></div>
</div>

Из того, что я прочитал, большинство, похоже, предлагают использовать скрытое полеи устанавливая его значение в javascript, однако, я не совсем понимаю, как заставить это работать в MVC, если я не размещаю данные где-то (это конкретное представление не в форме).

Ответы [ 2 ]

0 голосов
/ 19 августа 2010

Вы можете использовать JavaScript для вызова AJAX метода, который устанавливает переменную сеанса. Если JS не включен, то вызов не производится и переменная не установлена.

Я бы также вытащил весь этот код во вспомогательный метод, который просто берет src изображения, поскольку это сделает ваши взгляды намного чище.

0 голосов
/ 19 августа 2010

Поправьте меня, если я ошибаюсь, но похоже, что вы пытаетесь использовать прогрессивное улучшение.Если это так, то правильнее всего сделать так, чтобы страница отображала самую основную версию (.gif), а затем попытаться использовать более продвинутую технологию (javascript), чтобы заменить / перезаписать ее более продвинутой (javascript)версия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...