- PR -

aspxファイルとaspx.csファイルについて

1
投稿者投稿内容
サイトウ
会議室デビュー日: 2005/07/31
投稿数: 18
投稿日時: 2006-08-07 09:30
お世話になります。

早速ですが、aspxファイルに宣言した変数の値を
aspx.csファイルのForm_Loadにて取得したいと思っております。

===== イメージ(aspx) =====
<%@ language="c#" Codebehind="hoge.aspx.cs" AutoEventWireup="false" Inherits="hoge.hoge" %>
<% PageID="ID001"; %> ←このようにaspxファイルにて宣言

===== イメージ(aspx.cs) =====
protected String PageID;

private void Page_Load(object sender, System.EventArgs e)
{
String hoge=PageID;
}

このようなソースを書いてテストしておりますが、
nullが返ってきます。

aspxファイルで記載した値を取得する方法が
あれば教えて頂ければと思います。

宜しくお願いします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-08-07 10:45
> aspxファイルで記載した値を取得する方法が
> あれば教えて頂ければと思います。

ありません、が正解かな。
aspxファイルとaspx.csファイルの関係なのですが、
・aspx.csファイルが親
・aspxファイルが子
この親子の継承関係になります。
子の内部変数を親から操作することはできないので、無理ということになります。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-08-07 11:03
<% 〜 %> はPage.Renderで走るので、その後なら取得できます。

コード:
protected override void Render(HtmlTextWriter writer) {
	base.Render (writer);
	string hoge=PageID; 
}



# 取得できてもタイミングが遅すぎて使いようがない。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-08-07 12:44
どうしてもページ側でやりたいなら、
コード:
<%@ language="c#" Codebehind="hoge.aspx.cs" AutoEventWireup="true" Inherits="hoge.hoge" %> 
void Page_Load(object sender, EventArgs e)
{
    PageID="ID001";
}


なんて方法もありますが。ちょっと求めているものと違いますよね。
_________________
囚人のジレンマな日々
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-08-07 14:11
ああ、cs側でprotectedで定義されてるの見落としてた。
ということで、見えないラベルを貼ってそこに書いておくというのはどうでしょう。

<asp:Label ID="PageID" runat="server" Text="ID001" Visible="False" />

とりだすのは、
 String hoge=PageID.Text;
で。
サイトウ
会議室デビュー日: 2005/07/31
投稿数: 18
投稿日時: 2006-08-07 18:31
皆様有難う御座いました。

要件としましては(今更ですが・・・)
aspxファイルをデザインしているチームがそのバージョンを
aspxファイル内に記載。
それを、aspx.cs内で取得してログにそのバージョン等その他諸々の
情報を書き出す。という物でした。

デザインチームはレガシーなaspならなんとか判る程度ですので
ログの書き出しをRenderイベントにずらして対処するのが
ベストかな・・・と思いました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)