web-dev-qa-db-ja.com

JavaScriptからweb.configを読み取る

Java.scriptを使用してweb.configの設定値を読み取る方法はありますか?なぜ私はそれをしたいのですか?

ユーザーが20分間非アクティブな場合、カウントダウンタイマー(2分間のカウントダウン)でモーダルダイアログをポップアップ表示するタイマーがWebサイトにあります。ユーザーが応答しない場合、ログアウトします。その場合、サーバーにpingを送信し(セッションを維持するため)、セッションを維持します

この15分は、jsファイルにハードコーディングされています。私はむしろJSにハードコーディングするよりも、設定ファイル/他のファイルからそれを拾いたいと思います

ここにコードスニペットがあります

$.fn.idleTimeout = function(options) {
        var defaults = {
                    //I would like to pick these values from some config file
            inactivity: 900000, //15 minutes 
            noconfirm: 120000, //2 minutes
            sessionAlive: 900000, //15 minutes
            click_reset: true,
            logout_url: '/Views/Pages/Timeout.aspx' 
        }

助言がありますか?

編集:これは別のjsファイルにあります。 <%=%>を実行すると、「不正なXML文字[このエラーで中断]非アクティブ:<%= ConfigurationManager.AppSettings ["非アクティブ"]%>;」というエラーが発生します。

30
ram

ASP.NETからJavaScriptを生成できます。

次に、次のようにサーバー側の設定をvar defaultsに書き込むだけです。

var defaults = {
    inactivity: <%=ConfigurationManager.AppSettings["Inactivity"] %>
}

編集:

JavaScriptを静的なjsファイルに保持したい場合は、ASP.NETアプリケーションによってレンダリングされた小さなvar defaultsから<script>を初期化できます。 web.configAppSettingsと同様に、設定はグローバルになります。

53
Daniel Vassallo

ビューから変数として渡します。

<script type="text/javascript">
   // needs to reside in your *.aspx file.
   $(function() {
       initPage(<%= Settings.Default.Inactivity %>, <%= Settings.Default.NoConfirm %>, <%= Settings.Default.LogoutUrl %>)
    });
    // Can reside in your *.aspx or in a *.js file.
    function initPage(inactivity, noconfirm, logoutUrl) {
        $.fn.idleTimeout = function(options) {
            inactivity: inactivity,
            noconfirm: noconfirm,
            logout_url: logoutUrl
        };
    };
</script>

できるだけ多くの変数について繰り返します。

15
Jarrett Meyer

個別の静的JSファイルから構成ファイルに直接アクセスすることはできません。これを行う1つの方法は、.aspxページにJavaスクリプトを追加することです。

私のWeb構成:

<appSettings>
   <add key="test" value="textBox"/>
</appSettings>

私のaspxページ enter image description here

この変数をグローバルに設定して、静的jsファイルmy jsファイル内でこの変数にアクセスできるようにしますhome.js

function ReadConfigSettings()
{
   alert( test);
}

したがって、この方法でjavascriptからweb config値を読み取ることができます。

8
Lijo

設定ファイルに値を配置した後、値を使用するページでJavaこのスクリプトを次のように配置します。Javaグローバルとしてのスクリプト。宣言する必要はありません。

ウェブ設定:

 </appSettings>
    <add key="varName" value="1" />
  </appSettings>

htmlページ:

<script>
    var varName= '@System.Configuration.ConfigurationManager.AppSettings["varName"]';
</script>
6
Thiago Araújo

通常、web.configクライアントに直接アクセスできるようにします。これには、構成に関する重要な情報(使用しているデータベースの資格情報など)が含まれている可能性があるためです。

JSファイルを動的にし、構成から適切なパラメーターを追加することをお勧めします。例えば:

$.fn.idleTimeout = function(options) {
    var defaults = {
                //I would like to pick these values from some config file
            inactivity: <%=ConfigurationManager.AppSettings["Inactivity"].ToString() %>, 
            noconfirm: <%=ConfigurationManager.AppSettings["NoConfirm"].ToString() %>, //2 minutes
            sessionAlive: <%=ConfigurationManager.AppSettings["SessionAlive"].ToString() %>, //15 minutes
            click_reset: true,
            logout_url: '/Views/Pages/Timeout.aspx' 
    }
4
abahgat

私は次の方法を試してみましたが、それは私が作業している.aspxページで機能しました、私のために機能していないことに気付いたのは、「[」を使用している代わりに、「(」を使用して機能していました.

var key = '<%=System.Configuration.ConfigurationManager.AppSettings("Environment").ToString() %>';
1
clarifier

JSファイルを動的にし、web.configを読み取ることができるサーバー側スクリプトによってタイムアウトを書き出す

0
Pete Duncanson

例として、次のように定義されたappsettings変数があります。

add key="ApplicationId" value="2"

Javascriptファイルからは(サーバーにあるため)これを読み取ることができないため、マスターファイルで変数を定義することができます。そのため、マスターファイルにはJavaスクリプト変数が含まれます。

<% var appId= ConfigurationManager.AppSettings["ApplicationId"]; %>

Javaスクリプトファイルからこの変数にアクセスできます。これは、このsiteHost変数がJavaスクリプトでグローバルスコープを持つためです。

したがって、.jsファイルでこの変数にアクセスするには、

alert(appId);
0
Cheranga