一般的な手順としては、以下の通り
- コードビハインドでWeb.configを読み込む
- 取得した値をWebフォームのHiddenFieldなどに保持する
- 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 件のコメント :
コメントを投稿