- PR -

Webサーバーコントロールつかえな〜い

1
投稿者投稿内容
GoroGoro
会議室デビュー日: 2003/03/12
投稿数: 3
投稿日時: 2003-03-12 18:42
どなたか教えてください。
下記PGMはTO、CCという名のチェックBOXリストに必要なvalueを入力し、追加するものです。
また、ADDをクリックするとForm内で選択されているnameとvalue出力します。

<<そこで問題なのですが>>
CheckBoxListを可変で追加する際、また通常のCheckBoxの時もそうですが、
このコントロールを使うとなぜチェックボックスのvalueがONorOFFしか設定できないのでしょうか?(nameもTO:0 TO:1となる)かなり使えません。これをRequest.Formで受け取った時どの項目がチェックされたのか分からないですよね!
また、異種間phpなどのシステムにsubmitした場合どう受け取ればよいのか!

HTMLソース上↓このようにしたいのです。
<input type="checkbox" name="TO" value="pyuki">
<input type="checkbox" name="TO" value="pyuki2">

どうしても.netのビュー・ステートを使用したいのです。
どなたか、良い方法がありましたら教えてください。

------------------------------------------------------------------
<%@ PAGE LANGUAGE="C#"%>
<html>
<head>
<script runat="server">
String test;
void Page_Load(object sender,EventArgs e){
int loop1;
NameValueCollection coll;
coll=Request.Form;
String[] arr1 = coll.AllKeys;
for (loop1 = 0; loop1 < arr1.Length; loop1++)
{
test+="Form: " + arr1[loop1] +"=="+coll.Get(arr1[loop1])+"<br>";
}
}

void addRadio(object sender,EventArgs e){
TO.Items.Add(new ListItem("TO",alias.Text));
CC.Items.Add(new ListItem("CC",alias.Text));
alias.Text=null;
DataBind();
}
</script>
</head>
<body>
<form runat="server">
<asp:CheckBoxList id="TO" runat="server">
</asp:CheckBoxList><br>

<asp:CheckBoxList id="CC" runat="server">
</asp:CheckBoxList><br>
<asp:TextBox id="alias" runat="server"/><br>
<asp:Button Text="ADD" OnClick="addRadio" runat="server"/>
</form>
<br><br>
<%#test%><br><br>
</body>
</html>
Tohru
会議室デビュー日: 2002/12/19
投稿数: 19
投稿日時: 2003-03-13 12:59
WebFormは全然使ったことがないのですが (^^;


> CheckBoxListを可変で追加する際、また通常のCheckBoxの時もそうですが、
> このコントロールを使うとなぜチェックボックスのvalueがONorOFFしか設定できないのでしょうか?(nameもTO:0 TO:1となる)

HTMLのチェックボックスがonかそうでないかの2値しか持てないからでしょうね
ブラウザはチェックが入っていないチェックボックスの名前は送り返さなかったように思いますので
同じ名前が複数存在すると、それこそどれがチェックされているのか判断できないということになります


> 異種間phpなどのシステムにsubmitした場合どう受け取ればよいのか!

普通にHTMLからの情報をPHPで受ける場合と全く同じでしょう

# name指定と同じ名前の変数に、自動的に値が入る・・・だったかな?
GoroGoro
会議室デビュー日: 2003/03/12
投稿数: 3
投稿日時: 2003-03-13 14:21
レス、ありがとうございます。

>HTMLのチェックボックスがonかそうでないかの2値しか持てないからでしょうね
いいえ、HTMLのフォームデータ上はcheckboxもonoff以外のカスタマイズデータも挿入できますよ。

調べて分かったのですが、このWebコントロールについてはそういったvalueに任意値をもてないとのことでした。
nameに関しても指定したCheckBoxList内にListを追加するのであれば、そのID(この場合「TO」)に連番を振る形式をとるそうです。Labelだけ任意だそうです!
<asp:CheckBoxList id="TO" runat="server">
<!--ここにItemList連番で入る-->
</asp:CheckBoxList>

>同じ名前が複数存在すると、それこそどれがチェックされているのか判断できないということになります
ASPなら「カンマ」区切りで同じnameのvalueを連結しますよ!
PHPでもデータ連結できます。+同じ名前にして配列でうけとれますよ。。。

>普通にHTMLからの情報をPHPで受ける場合と全く同じでしょう
いいえ、違います。
Webコントロールの場合は全て自ページしかデータを扱えないので、
formのアクション先を他(asp or php)のファイルには送れません。
つまり、下記ができないそうです。
フォーム入力→データ処理PGM
asp.net(webサーバコントロール)→ 他(asp or php)のPGM

つかえないですね!webサーバコントロール!
もうちょっと工夫すればよい技術なのだが!やはり汎用性がないですねMSさん。。。
いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2003-03-13 16:02
おっしゃるとおり、他のページへ遷移させるためのフォームとしては、
ASP.NETのコントロール群やViewStateなどのフレームワークは、意図に合わないので
使用できませんね。
そういうケースは他の方法を検討なさる方がよいでしょう。

ASPなどでは、ページを作業単位としてページ遷移させていくことで、プログラムをして
きましたが、ASP.NETでは、むしろ1つのページの中である程度アプリケーションを
完成させていくような設計になるのではないでしょうか。

WEB製作でもオブジェクト指向で設計する。発想の転換が必要なのではないでしょうか。


[ メッセージ編集済み 編集者: いのつち 編集日時 2003-03-13 16:09 ]

で。どうしてもASP.NETからPHPへとばすための記述が必要ならば、
別にPOSTBACKされるわけではないので、要は、ゴリゴリとその部分のHTMLを
HtmlGerericControl などで吐かせればいいだけなんですけどね。。
Webコントロールほどスマートではないですが。

逆にPHPが吐いたHTMLがASP.NETをたたくのであれば、POSTされるデータの仕様
を知る必要があるわけで、Request.Formなどでチェックしていくことになるでしょう。

結局は自分のシステムが提出したデータ(HTML)をユーザがどう反応したのか・・。その
手立てをFrameworkがRequestデータを隠蔽してコントロールなどで表現できるだけなので、
よそへ送ることはWebコントロールなど仰々しいものを使わなくてもいいんではないでしょうか。


[ メッセージ編集済み 編集者: いのつち 編集日時 2003-03-13 16:45 ]
1

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