- PR -

[ASP.NET]複数画面への遷移

投稿者投稿内容
NA(-_-)MI
常連さん
会議室デビュー日: 2003/10/30
投稿数: 32
投稿日時: 2006-08-09 11:45
一つの画面から、異なるボタンを押して
複数の画面への遷移を考えています。

ボタンAクリック → 画面A表示
ボタンBクリック → 画面B表示

それぞれ専用のフォームをつくりパラメータをセットしています。
パラメータの受渡はPOSTを使っています。

例えば↓↓こんな感じ
-------------------------------------------------------
<form action="xxxxx" method="post" target="_parent">
<input type="hidden" id="para1" runat="server">
<input type="hidden" id="para2" runat="server">
</form>

<form action="xxxxx" method="post" target="_parent">
<input type="hidden" id="para1" runat="server">
<input type="hidden" id="para3" runat="server">
</form>
-------------------------------------------------------
サーバ処理でパラメータに値を格納しています。

送信するパラメータは異なるものの、一部には共通のパラメータがあります。
同じ名前で送りたいのですが、idを同じにするとエラー。
<input type="hidden" name="para1" id="para1dummy" runat="server">
としても実際に表示されるnameはidと同じ「para1dummy」になってしまいます。

ASPのときは<form>をいくつも作って、他画面へ遷移させることをしていたのですが、
ASP.NETではみなさんどのような記述をしているのでしょうか?

よろしくお願いします。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-08-09 11:53
  Sessionオブジェクトを使っちゃダメなんですか?

ASP でも使えましたが・・・
NA(-_-)MI
常連さん
会議室デビュー日: 2003/10/30
投稿数: 32
投稿日時: 2006-08-09 11:56
回答ありがとうございます。

過去の経緯もあって、セッションは使っておりません。
また、ASP.NET以外、ASPなどへの受渡もありますので、セッションは使いにくいところです。
POSTパラメータでの受渡での実現方法があればよろしくお願いします。

[ メッセージ編集済み 編集者: NA(-_-)MI 編集日時 2006-08-09 11:58 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-08-09 12:06
ASP.NETでもFormタグにrunat=serverの記述をしなければ複数設定できるので
ボタン毎にFormを作って切り分けられたと思います。
ASP.NET 2.0ならPostBackUrlを使う方法でもいけるかな。
NA(-_-)MI
常連さん
会議室デビュー日: 2003/10/30
投稿数: 32
投稿日時: 2006-08-10 08:56
<form>を複数作ることはできるのですが、
<input ・・・>はrunat="server"を付けないと
サーバ処理で値を入れることができないので、id属性を指定し、名前を付けています。

そこが重複すると、実際のポストパラメータが変わってしまうところが
どうにかならないのでしょうか?

ちなみに環境はASP.NET1.1です。
よろしくお願いします。

[ メッセージ編集済み 編集者: NA(-_-)MI 編集日時 2006-08-10 09:07 ]
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2006-08-10 10:29
滅茶苦茶強引ですが、サーバ側のボタンClick時イベントで

<form action="xxxxx" name="Form1" method="post" target="_parent">
<input type="hidden" id="para1" name="para1">
--押されたボタンにより以下を出力する/しないを判断
<input type="hidden" id="para2" name="para2">
--押されたボタンにより以下を出力する/しないを判断
<input type="hidden" id="para3" name="para3">
</form>
<script type="text/javascript">
<!--
--押されたボタンにより以下を出力する/しないを判断
document.Form1.para1.value="aaa1";
document.Form1.para2.value="aaa2";
document.Form1.action="Axxxxx";

--押されたボタンにより以下を出力する/しないを判断
document.Form1.para1.value="bbb1";
document.Form1.para3.value="bbb3";
document.Form1.action="Bxxxxx";

document.Form1.submit();
// -->
</script>

というコードをRegisterStartupScriptで書き出したら
どうでしょうか

# 動作テストもしていないし、思い付きですので動作しなかっ
# たらすいませんm(_ _)m


[ メッセージ編集済み 編集者: Katze 編集日時 2006-08-10 10:30 ]
NA(-_-)MI
常連さん
会議室デビュー日: 2003/10/30
投稿数: 32
投稿日時: 2006-08-10 10:40
確かに、サーバ側クリック処理で
必要な部分のみ書き出してあげれば、実現できそうですね。

試してみます。ありがとうございます。


やはり、共通のパラメータはセッション変数に格納するのが
一般的なのでしょうね。。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2006-08-10 11:17
素朴な疑問なんですが、そもそもrunat="server"を指定していないFormの中に
サーバーコントロールを設置してまともに動きます?
サーバーサイドのコードは実行されない気がするのですが・・・。

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