2009-03-20 8 views
3

私は新しいですが、C#.NETのDMS(教育用ドメイン)用のウェブサイトを設計します。javascriptのC#変数へのアクセス

私のASPXページの1つでは、accessrightによるとJavaScriptのメニューを無効にしたいと考えています。

accessrightデータベーステーブルloginがSQLサーバーの属性として格納されており、その1つのC#変数にaccessrightを取得し、その変数にアクセスしたいと考えています。

別の方法がある場合は、教えてください。

+2

私は、ユーザーのアクセス権に基づいて何かを隠すことはJavaScriptで行うべきではないことに注意したいと思います。私が実際にそれを見てはいけないなら、私は自分のDeveloper Toolsコンソールを開いて 'iCanHazAccess = true;'を試してみて、メニューをポップアップすることができます。このサーバー側にもケータリングをしているのであれば、それはちょうど真ではない – isNaN1247

答えて

0

クライアント側のコードでサーバー側の変数にアクセスすることはできません。唯一の方法は、AJAXライブラリを使用するか、クライアントサイドスクリプトとしてページに変数を注入することです。

はそのようにページにあなたの変数の値を注入:

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

とJavaScriptの機能では、サーバー側の変数としててmyVariableを使用しています。

しかし、私はあなたがClient Side or Server Sideコンセプトから始めるべきであることを物事。

+0

です。これまで思った<%= this.VAR%> ?? –

+0

本当ではないのはなぜですか?私は毎日それを使用し、何も間違っていません。 <%= this.VAR%>方法はスパゲティコードです。私はそれが気に入りません。 – Canavar

1

これは私がすばやくグーグルのサンプルコードです。 http://www.eggheadcafe.com/community/aspnet/7/63763/using-c-variable-in-java.aspx正しい方向に向けるべきです。 strvariableはC#変数です。

<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

は、まあ、我々はASPの日の間に使用するために使用さ1つのショートカットがあり、これはまだページの分離コードでASP.NET
で働くパブリックプロパティを宣言ASPXでpublic int MyInteger

これを入れて言います
<script> 
    function GetMyValue() 
    { 
    var someVar = <%=this.MyInteger%>; 
    //Do something 
    } 
</script> 
+0

私はScarlet Gardenの解決策以上のものが好きです。どうして?ソリューションを使用して、何かを変更したい場合は再構築する必要はありません! –

0

私たちのコードベースでは、RemoteInvokeという技術を実装しました。これにより、javascriptはポストバックなしでサーバー上のメソッドを呼び出すことができます。効果的には、サーバー側で動的バインディングを使用した名前による呼び出しです。

メソッドの名前とそのjavascript引数がバンドルされ、サーバーに渡されると、サーバーはそれらを展開し、最も一致するメソッドを呼び出して呼び出します。ルールでは、RemoteInvokable属性を持つメソッドのみを呼び出すことができ、許容されるデータ型は数値、文字列、ブール値です。コールの委譲を処理するコードは、できるだけ近似マッチングを行うシグネチャと一致します(つまり、浮動小数点数をargとして渡すと、その名前とシグネチャを持つメソッドが優先されますが、存在しない場合は、サーバー側の変数にアクセスする。

がRemoteInvokeを介して実装することができますマッチング一体型の引数を持つ1。

+0

これは有望そうですが、実装するポスターのニーズや気にする以上のものでしょう。 :\ –

2

私は、Javascriptの変数にサーバsilde変数を渡すと私の問題の際にこれを見つけた。これを行うための最善の方法は、使用していますeval() javascript方法:

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

私を楽しむt。 ;)

関連する問題