XXX.asxp と XXX.csの間の変数の受け渡し – プログラミング – Home

XXX.asxp と XXX.csの間...
 
通知
すべてクリア

XXX.asxp と XXX.csの間の変数の受け渡し


おっさんです。
 おっさんです。
(@おっさんです。)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

初歩的な質問ですみません、誰か教えてください。

Webアプリケーション XXX.aspx と XXX.cs を作っています。
テキストボックスのようなコントロールの中に保存された値はXXX.aspxからXXX.csに渡さ
れます。
つまり、XXX.aspxでTextBoxを以下のように定義できますし、XXX.csで、TextBox.Textで
値を使うことができます。

<asp:TextBox ID=tbxUsername runat=server></asp:TextBox>

しかし、XXX.aspxの中で(テキストボックスのようなコントロールとは無関係に)自由に
変数を定義することはできるのでしょうか?
また、その値をXXX.csに渡すことはできますか?

(こういうふうに質問して分かってもらえるかどうか、わかりません。)


引用解決済
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 21年前
投稿: 320
 

<% ~ %>内で普通に定義可能です。
ローカル変数のような扱いになります。

scriptブロックで宣言すれば,フィールドと同じ扱いになります。

> また、その値をXXX.csに渡すことはできますか?

XXX.aspx.cs内のクラスを継承したクラスとして,XXX.aspxを出力するためのクラスが作
られるため,XXX.aspx.cs中からXXX.aspx内のフィールドへのアクセスは当然できませ
ん。
テキストボックスにしても,XXX.aspx.cs内のクラスのフィールドとして宣言されている
ために,XXX.aspx.cs内のクラスからアクセス可能になっているだけです。


返信引用
おっさんです。
 おっさんです。
(@おっさんです。)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

アドバイス有難うございます。
そうすると、XXX.aspxで定義する<%~%>のローカル変数の値をxxx.csに渡すためには、
どのようにすればいいのでしょうか?

たとえば、下記の方法で渡すことはできるのでしょうか?

(1)コントロールを定義しておいて(表示したくないのでVisibleにしないとかできるで
しょうか?)
(2)<%~%>で定義したローカルな変数に値を入れる。
(3)そのローカル変数を、(1)のコントロールに入れる。
(4)そのコントロールの値をXXX.aspx.csで読んで処理する。

というような方法が取れますでしょうか。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 21年前
投稿: 320
 

> そうすると、XXX.aspxで定義する<%~%>のローカル変数の値をxxx.csに渡すために
は、
> どのようにすればいいのでしょうか?

XXX.aspxでローカル変数を定義しないことが,一番の上策だと思いますが……。

<% ... %>のブロックは,そのままコンパイル後のクラスにおいて,プログラムのコード
になります。
なので,*.csでできることは*.aspxのコードブロックでできることになります。

> (1)コントロールを定義しておいて(表示したくないのでVisibleにしないとかできる

> しょうか?)
> (2)<%~%>で定義したローカルな変数に値を入れる。
> (3)そのローカル変数を、(1)のコントロールに入れる。
> (4)そのコントロールの値をXXX.aspx.csで読んで処理する。

コントロールにIDを振っておけば,そのIDをフィールド名として.aspx上からアクセス出
来ます。
なので,

コントロールID.プロパティ = 変数

のようにしてプロパティに値を代入出来ますし,

変数2 = コントロールID.メソッド(変数)

のようにしてメソッドの呼び出しも可能です。


返信引用
おっさんです。
 おっさんです。
(@おっさんです。)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

すみません、私が、よく理解できていません。
そこで、実際のプログラムを見ていただいたほうがいいと思いました。

以下はXXX.aspxです。実行するとボタン”Pass user password, site to XXX.aspx.cs”
が表示されます。

クリックすると、XXX.aspx.csが起動されますが、XXX.aspx.csでは、(見えない)3つの
テキストボックスtxbUsername、txbPassword、txbSitenameに最初から設定した値、
user1、passowrd1、site1を参照して処理します。

このときに、3つのテキストボックスに設定した値を(テキストボックスを表示してユー
ザが手で変更するのではなく) 最初にXXX.aspxを起動するときのパラメータにして与え
る、または、XXX.aspxに設定した変数で書きなおす(user1,password1,site1という値を
上書きする)ことをやりたいのです。

<%@ Page Language=C# AutoEventWireup=true CodeFile=XXX.aspx.cs
Inherits=_Default %>

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0
Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>

<html xmlns= http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Invoker Test Program 2</title>
</head>
<body>
<script> A = aaaa </script>

<form id=form1 runat=server>
<div>

<asp:TextBox ID=tbxUsername runat=server Visible=false
Text=user1 ></asp:TextBox><br />
<asp:TextBox ID=tbxPassword runat=server TextMode=Password
Visible=false Text=password1></asp:TextBox><br />
<asp:TextBox ID=tbxSitename runat=server Visible=false
Text=site1></asp:TextBox><br />
<asp:TextBox ID=tbxPath runat=server
Visible=false></asp:TextBox><br />
<asp:Button ID=Button1 runat=server OnClick=Button1_Click
Text=Pass user password, site to XXX.aspx.cs Width=300px />

<! XXX.aspxで設定した変数を、上記のテキストボックスのテキストとして設定
し、XXX.aspx.csに渡したいのですが、何かいい方法はないでしょうか? >

<!
tbxUsername.Text = user
<% string username = user2; %>
<% string password = password2; %>
<% string sitename = site2; %>
    >

</div>
</form>
</body>
</html>


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 21年前
投稿: 320
 

使用するコントロールより下でプロパティを変更しようとしても,その時点でコントロー
ルは出力されています。
そのため,出力されるものに変化はありません。

変更するならばコントロールより上で値を設定する必要があります。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました