Как получить значение asp.net Session в jquery-методе?

Я хочу получить доступ к значению сеанса в jquery-методе на странице просмотра ASP.NET MVC. См. Ниже код,

$('input[type=text],select,input[type=checkbox],input[type=radio]').attr('disabled', '<%= Session["CoBrowse"].ToString() %>');

Как я могу получить значение Session в jquery.

Ответ 1

$('input,select').attr('disabled','<%=Session["CoBrowse"].ToString() %>');

Ответ 2

Не уверен, что это лучший маршрут, но на вашей странице aspx вы можете создать метод, который возвращает значение вашей переменной сеанса, например

Серверная сторона:

using System.Web.Services;
 [WebMethod(EnableSession = true)]
public static string GetSession()
{
   return Session["CoBrowse"].ToString();
}

затем вызовите эту клиентскую сторону метода с помощью jQuery:

$.ajax({
    type: "POST",
    url: "./Default.aspx/GetSession",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(result){
        ('input[type=text],select,input[type=checkbox],input[type=radio]').attr('disabled', result.d);
    }
});

Ответ 3

Много комментариев:

  • Вы не можете "получить доступ к сеансу из jQuery". Вы используете MVC и asp.net для создания HTML-страницы (с JavaScript). Session - это серверный объект, а JavaScript работает на стороне клиента.
  • Посмотрите селектора jQuery. Они имеют полезные селектора, такие как :checkbox, :text и т.д.
  • Ваш код создает ожидаемый JavaScript: он компилирует, запускает и создает JavaScript с true или false в нужном месте.
  • Это не способ отключить элемент. Если элемент имеет атрибут "disabled", он будет отключен независимо от значения. <input type="checkbox" disabled="false" /> также отключен, поэтому ваши элементы управления всегда отключены.
  • Если вы так или иначе выбираете, подумайте:

    var isCoBrowse = <%= Session["Name"].ToString().ToLower() %>;
    if(!isCoBrowse) //disable controls
      $(":text,:checkbox,:radio").attr("disabled","disabled"); //standard.
    

    Это создаст клиентский код JavaScript:

    var isCoBrowse = true;
    

    И, чтобы включить элемент:

    $("input").removeAttr("disabled");
    

Кроме того, есть намного лучшие способы для этого. Рассматривали ли вы возможность отключить элементы управления на стороне сервера, если это возможно?

Ответ 4

<input id="sessionInput" type="hidden" value='<%= Session["name"] %>' />

var getSessionValue = $('#sessionInput').val();

Ответ 5

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

Ответ 6

Легко! когда вы знаете, как:

@Html.Encode(Session ( "classificationTitle" ))

... и в файле .js:

var classificationTitle = document.getElementById('classificationTitle').innerHTML;

извините - я не могу опубликовать полный html, поскольку этот сайт вырезает угловые скобки: (