2009-03-20 21 views
3

Ich werde eine Website für DMS (Bildungsbereich) in C# .NET, die ich neu bin, zu entwerfen.Zugriff auf C# Variable in Javascript

In einer meiner ASPX-Seiten möchte ich ein Menü deaktivieren, das in JavaScript gemäß accessright ist.

Die accessright in Datenbanktabelle gespeichert login als ein Attribut in SQL Server, und ich möchte abzurufen dass accessright einem C# Variable und die Variable in JavaScript zugreifen möchten.

Wenn es einen anderen möglichen Ansatz gibt, sagen Sie es bitte.

+2

Ich würde beachten, dass das Verstecken von etwas basierend auf einem Benutzer Zugriffsrechte nicht in JavaScript getan werden sollte (es sei denn es ist eine wirklich unsensible Sache).Wenn ich es wirklich nicht sehen sollte, öffne ich einfach meine Developer Tools-Konsole und versuche 'iCanHazAccess = true;' und rufe dein Menü auf. Wenn Sie auch diese Server-Seite bedienen, dann ist das in Ordnung – isNaN1247

Antwort

0

Sie können nicht auf serverseitige Variablen im clientseitigen Code zugreifen. Die einzige Möglichkeit besteht darin, eine AJAX-Bibliothek zu verwenden oder Ihre Variablen als clientseitiges Skript zu pagen.

Ihre Variablenwert auf Seite wie das Injizieren:

string script = string.Format("var myVariable = '{0}';", vaiable.ToString()); 
if (!ClientScript.IsClientScriptBlockRegistered("myScript")) 
{ 
    ClientScript.RegisterClientScriptBlock(typeof(_Default), "myScript", script, true); 
} 

und in Ihren JavaScript-Funktionen verwenden myVariable als Server-Seite variabel.

Aber ich denke, Sie sollten mit Client Side or Server Side Konzept beginnen.

+0

das ist einfach nicht wahr! jemals gedacht <% = this.VAR%> ?? –

+0

Warum nicht wahr? Ich benutze es jeden Tag, und nichts falsch daran. <% = this.VAR%> Weg ist eine Art Spaghetty-Code. Ich mag es nicht. – Canavar

1

Dies ist ein Beispielcode, den ich schnell googelte. http://www.eggheadcafe.com/community/aspnet/7/63763/using-c-variable-in-java.aspx Es sollte Sie in die richtige Richtung weisen. Strvariable ist Ihre C# -Variable.

<INPUT id="hd" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 144px" type="hidden" value="<%=strvariable %>"> 

<script language="javascript"> 
function Button_Click() 
{ 
    alert(document.getElementById('hd').value); 
} 
</script> 
10

Nun gibt es eine Abkürzung wir während der ASP-Tage zu verwenden verwendet werden, um diese in ASP.NET funktioniert immer noch
auf der Seite Code-Behind ein öffentliches Eigentum In der aspx public int MyInteger
dieses

setzen sagen erklären
<script> 
    function GetMyValue() 
    { 
    var someVar = <%=this.MyInteger%>; 
    //Do something 
    } 
</script> 
+0

Ich mag das mehr als die Lösung von Scarlet Garden. Warum? Mit Ihrer Lösung müssen Sie nicht neu aufbauen, wenn Sie etwas ändern wollen! –

0

In unserer Code-Basis haben wir eine Technologie namens RemoteInvoke implementiert, wobei JavaScript Methoden auf dem Server ohne Postback aufrufen kann. Effektiv ist es Call-by-Name mit dynamischer Bindung auf der Serverseite.

Der Name der Methode und ihre JavaScript-Argumente werden gebündelt und an den Server übergeben, der Server entrollt sie und findet die am besten passende Methode zum Aufruf. Die Regeln lauten, dass Sie nur Methoden mit dem RemoteInvokable-Attribut aufrufen können und die zulässigen Datentypen sind Zahlen, Zeichenfolgen und boolesche Werte. Der Code, der die Anrufdelegierung behandelt, wird mit der Signatur übereinstimmen, die eine ungefähre Übereinstimmung nach Möglichkeit vornimmt (dh wenn Sie eine Gleitkommazahl als Argument übergeben, wird eine Methode mit diesem Namen und dieser Signatur bevorzugt, aber wenn keine vorhanden ist, wird sie gefunden ein mit einem passenden integralen Argument.

eine serverseitige Variable Zugriff kann über RemoteInvoke implementiert werden.

+0

Das sieht vielversprechend aus, ist aber wahrscheinlich mehr, als das Poster benötigt oder zu implementieren braucht. : \ –

2

ich dies mit dem Übertragen von Server silde Variable auf eine Javascript-Variable bei meinem Problem gefunden. Der beste Weg, dies zu tun, wird mit eval() Javascript-Methode:

function GetMyValue(){  
    eval("var someVar = " + parseInt<%=this.MyInteger%>")); 
    //Do something  
} 

Verwenden Sie es und genießen Sie i t. ;)

Verwandte Themen