- PR -

ASP側からASP.netで値を受け取る処理

投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2005/07/14
投稿数: 66
投稿日時: 2005-07-27 10:29
はじめまして。
ASP側からSubmitでC#.netに値を送信しています。
C#.net側でRequest["ASP側TEXT項目名"];
で値を受け取った場合に英数字はただしく受け取れるのですが、
平仮名は空文字になり、カナは変な英数字になってしまいます。
どうしてなんでしょう・・・

また、ASP側で複数の同じ項目名の値を配列で取るには
どうすれば良いのでしょうか。

ASP側
<input type="text" name="txtAAA" value="10">
<input type="text" name="txtAAA" value="20">
<input type="text" name="txtAAA" value="30">

C#.net側
Request["txtAAA"]; ← これだと中身は"10,20,30"なので
Request["txtAAA"][1]; ← みたいにしたのですが、うまく"20"だけ取り出せません。

以上、よろしくお願いします。
Gun
常連さん
会議室デビュー日: 2005/01/24
投稿数: 23
投稿日時: 2005-07-27 11:07
引用:

Request["txtAAA"]; ← これだと中身は"10,20,30"なので
Request["txtAAA"][1]; ← みたいにしたのですが、うまく"20"だけ取り出せません。



私はVB.Netで仕事をすることが多いのですが、上記の場合、
Split(Request("txtAAA"),",")
のようにし、配列に一度しまってから作業しております。
Split関数に類似したものがあるかどうか、わかりませんが、
Microsoft.VisualBasic.Strings内にSplitはあります。

参考
http://www.atmarkit.co.jp/fdotnet/dotnettips/254vbfunc/vbfunc.html
未記入
ベテラン
会議室デビュー日: 2005/07/14
投稿数: 66
投稿日時: 2005-07-27 11:13
Gunさんどうもありがとうございます。
Split関数を使用してみます。

ASP側→C#.netのデータのやりとりは相変わらず2バイト文字が正しくPOSTできません・・・
Gun
常連さん
会議室デビュー日: 2005/01/24
投稿数: 23
投稿日時: 2005-07-27 11:29
文字が化ける、と聞くとやはり疑いたくなるのは文字コードですが。
ASPだとIISに依存するから、shift-jisになるんですかね。
で、.NetだとWeb.configやMachine.configに登録されているデフォルト?の文字コードがutf-8だったりするので、その辺で何かあるのでしょうか?
(あくまで推測ですが…。)

↓この辺が関係してくるのかな?と。
<globalization requestEncoding="***" responseEncoding="***" />
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-07-27 11:37
引用:

未記入さんの書き込み (2005-07-27 11:13) より:
ASP側→C#.netのデータのやりとりは相変わらず2バイト文字が正しくPOSTできません・・・


使用している文字コードなど確認してください。C#はUnicodeで文字列を扱うので、ASP.NETはShiftJis、ASPはISO-2022-JPなんて事になると、2バイト文字だけ化けることになるでしょうね。
私ならASP側でデータベースに格納、C#.NETには乱数で生成したIDを渡す。C#はIDを元にデータベースから値を取得と言う流れにするかも。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
未記入
ベテラン
会議室デビュー日: 2005/07/14
投稿数: 66
投稿日時: 2005-07-27 11:39
甕星さんどうもです。
正にその通りでASP側はシフト JISでC#側はUNICODEです。
値を変換して渡すとかできないんでしょうか。エンコード等。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-07-27 12:01
引用:

未記入さんの書き込み (2005-07-27 11:39) より:
正にその通りでASP側はシフト JISでC#側はUNICODEです。
値を変換して渡すとかできないんでしょうか。エンコード等。


解決方法って
・両方ともShiftJISにする。
・両方ともUnicodeにする。
・自前でコード変換(BASE64とか)してから渡す。
・ブラウザを経由せず(POSTを使わずに)バックエンドのサーバー経由などで渡す。
ぐらいかな?
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-07-27 12:17
<form action="hoge.aspx" onsubmit="document.charset='utf-8'">
とか。

> Split関数を使用してみます。

C#ならstring.Split メソッドの方がいいでしょう。

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