2014/06/30

【ASP.NET】JavaScriptからWeb.configを取得する方法

結論から言うと、JavaScripからWeb.configを直接読み書きすることはできない。(と思う。)しかし、ちょっと手間ではあるが間接的に取得する方法がある。

一般的な手順としては、以下の通り
  1. コードビハインドでWeb.configを読み込む
  2. 取得した値をWebフォームのHiddenFieldなどに保持する
  3. JavaScriptからWebフォームの項目にアクセスし、値を取得する

こうすれば簡単なのだが、場合によっては項目追加ができないときもあるだろう。
じゃぁ、項目を追加しないでどうするのさ?

前置きが長くなってしまった。

項目を追加せずにJavaScriptからWeb.configの値を取得する方法をまとめていく。




JavaScriptからWeb.configの値を取得する



修正するファイルは、以下の3つ。
  • コードビハインド(*.aspx.cs)
  • デザイナ(*.aspx)
  • JavaScriptファイル(*.js)

 

コードビハインドの修正


public partial class MainPage : BasePage
{
    // メンバ変数にWeb.configから取得した値を保持
    protected string ConfValue
        = ConfigurationManager.AppSettingus["CONFIG_KEY"].ToString();
}
見ての通り、ConfigrationManagerを使用してWeb.configのデータを取得している。
ここで注意が必要なのは、メンバ変数のアクセス修飾子に「protected」使用しているところ。

あとで説明するが、デザイナ(aspxファイル)でこのメンバを扱うため、privateでは狭すぎる。だからといってpublicじゃ広すぎる。ということでprotectedを使うこと。



デザイナ(ASPX)の修正


<head>
    <title>○○業務画面</title>
</head>
<script type="text/javascript">
    // コードビハインドのメンバ変数にアクセスする
    function GetConfValue() {
        return "<%=ConfValue %>";
    }
</script>
<body>
    いろいろ
</body>
なぜASPXファイルにわざわざ取得用のスクリプトを書くか?
理由は、コードビハインドのメンバ変数にアクセスできるところがASPXファイルしかないためだ。
そして「"<%=ConfValue %>"」が、コードビハインドのメンバ変数を参照するときの書き方。ダブルクォーテーションでくくらないと、JavaScript側で数値なのかと判定されてしまうため要注意。



JavaScriptの修正


function onClick() {
    var confValue = GetConfValue();
    alert(confValue);
}

ASPXファイルのScrip内に書かれたWeb.config取得用のメソッドを呼出て、値を受け取っている。
前述の通り、JavaScript内で「"<%=ConfValue %>"」と記述しても、「<%=ConfValue %>」という文字列が取得できるだけなので注意。



「Web.config→コードビハインド→ASPX→JavaScrip」のように変数を受け渡して、ずいぶん遠回りしながらWeb.configファイルにアクセスしている。
もちろん、値を書き換える場合は、「JavaScrip→ASPX→コードビハインド→Web.config」の要領で書けば良い。



参考







以上

written by @bc_rikko

0 件のコメント :

コメントを投稿