- - PR -
ASP側からASP.netで値を受け取る処理
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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"だけ取り出せません。 以上、よろしくお願いします。 | ||||
|
投稿日時: 2005-07-27 11:07
私はVB.Netで仕事をすることが多いのですが、上記の場合、 Split(Request("txtAAA"),",") のようにし、配列に一度しまってから作業しております。 Split関数に類似したものがあるかどうか、わかりませんが、 Microsoft.VisualBasic.Strings内にSplitはあります。 参考 http://www.atmarkit.co.jp/fdotnet/dotnettips/254vbfunc/vbfunc.html | ||||
|
投稿日時: 2005-07-27 11:13
Gunさんどうもありがとうございます。
Split関数を使用してみます。 ASP側→C#.netのデータのやりとりは相変わらず2バイト文字が正しくPOSTできません・・・ | ||||
|
投稿日時: 2005-07-27 11:29
文字が化ける、と聞くとやはり疑いたくなるのは文字コードですが。
ASPだとIISに依存するから、shift-jisになるんですかね。 で、.NetだとWeb.configやMachine.configに登録されているデフォルト?の文字コードがutf-8だったりするので、その辺で何かあるのでしょうか? (あくまで推測ですが…。) ↓この辺が関係してくるのかな?と。 <globalization requestEncoding="***" responseEncoding="***" /> | ||||
|
投稿日時: 2005-07-27 11:37
使用している文字コードなど確認してください。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-27 11:39
甕星さんどうもです。
正にその通りでASP側はシフト JISでC#側はUNICODEです。 値を変換して渡すとかできないんでしょうか。エンコード等。 | ||||
|
投稿日時: 2005-07-27 12:01
解決方法って ・両方ともShiftJISにする。 ・両方ともUnicodeにする。 ・自前でコード変換(BASE64とか)してから渡す。 ・ブラウザを経由せず(POSTを使わずに)バックエンドのサーバー経由などで渡す。 ぐらいかな? _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||
|
投稿日時: 2005-07-27 12:17
<form action="hoge.aspx" onsubmit="document.charset='utf-8'">
とか。 > Split関数を使用してみます。 C#ならstring.Split メソッドの方がいいでしょう。 |