2009-05-13 12 views
11

Chcę uzyskać dostęp do wartości Session w metodzie jquery na stronie widoku ASP.NET MVC. Zobacz poniższy kod:Jak uzyskać wartość sesji asp.net w metodzie jquery?

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

Jak mogę uzyskać wartość Session w jquery.

+0

To wygląda jak powinno działać co się dzieje, gdy używasz powyższy kod – ichiban

Odpowiedz

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

Nie wiem, czy jest to najlepsza trasa, ale na stronie aspx można utworzyć metodę zwracającą wartość zmiennej sesji, np.

po stronie serwera:

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

następnie wywołać metodę tej strony klienta przy użyciu 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

Kan.? masz dostęp do sesji z wewnątrz statycznej metody? Nie myślałem, że można. – rball

+0

To jest trasa, którą poszedłem również. Mam usługę sieciową, która zwraca mi identyfikator sesji, tak jak .. Guid a = Guid.Parse (HttpContext.Current.Session ["Session_Id"]. ToString()), a następnie czytam to po stronie klienta poprzez funkcję ajax jquery.Bądźmy świadomi, że będzie to GET, ponieważ zwracasz tylko wartość – tmutton

+0

Nie wiem, dlaczego ktoś głosuje r tę odpowiedź. nie możemy uzyskać sesji w statycznej metodzie –

8

Wiele komentarzy:

  1. nie "Access Sesja z jQuery" Można. Używasz MVC i asp.net do tworzenia strony HTML (z JavaScript). Sesja jest obiektem po stronie serwera, a JavaScript działa po stronie klienta.
  2. Spójrz na jQuery's selectors. Mają przydatne selektory, takie jak :checkbox, :text, itp.
  3. Twój kod generuje oczekiwany kod JavaScript: kompiluje, uruchamia i tworzy JavaScript z true lub false we właściwym miejscu.
  4. To nie jest sposób na wyłączenie elementu. Jeśli element ma atrybut "disabled", zostanie wyłączony, niezależnie od wartości. <input type="checkbox" disabled="false" /> jest także wyłączone, więc Twoje ustawienia są zawsze wyłączone.
  5. Jeśli to jest sposób wybrać tak, rozważyć:

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

    To będzie produkować stronie klienta JavaScript kod:

    var isCoBrowse = true; 
    

    I, w celu umożliwienia element:

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

Ponadto istnieje wiele lepszych sposobów na Skompiluj to. Czy rozważałeś wyłączenie kontroli po stronie serwera, jeśli to możliwe?

+1

var isCoBrowse = <% = Sesja ["Nazwa"]. ToString(). ToLower()%>; nieprawidłowa składnia – sarsnake

+0

# 1 - Zła odpowiedź (np. var search = @Session ("MyValue") działa) –

+1

@EdDeGagne - Czy nie napisałem tego w punkcie 5? JavaScript nie może uzyskać dostępu bezpośrednio do sesji i nie wie nawet, że jest sesja. Używanie sesji, jako strony serwera, do tworzenia skryptów JavaScript, jest czymś zupełnie innym. – Kobi

1

Jeśli ta zmienna sesji jest wrażliwymi danymi (które w tym przypadku prawdopodobnie nie są), nie użyłbym tego rozwiązania, ponieważ pokazywałoby dane sesji podczas przeglądania źródła javascript. Jeśli są to wrażliwe dane sesji, uzyskanie dostępu do nich za pomocą metody internetowej (patrz wyżej) jest prawdopodobnie najlepsze.

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

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

Easy! kiedy wiesz jak:

@ Html.Encode (Sesja ("klasyfikacjaTytuł"))

... oraz w.plik js:

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

przykro - nie mogę zakładać pełną html jak ta strona paski z kątowników :(

Powiązane problemy