2011-02-07 14 views
5

私は、チェック項目を基にしてjavascriptで作成された配列を持っています。この配列が作成されると(整数配列)、これをC#にどのように渡すことができますか?それは、隠されたテキストボックスを作成し、文字列内のすべての項目を追加するだけで、C#の中でその文字列を分割する方が簡単でしょうか?たとえば、行1,3,7のチェックボックスをクリックした場合、私の配列は{1,3,7}です。繰り返しますが、文字列 "1,3,7"を取得する隠しテキストボックスを持つ方が簡単で、テキストボックスから文字列を取得するだけですか?javascript配列をC#メソッドに渡す

+0

もっと簡単です。 – epitka

+0

JSONをC#でデコードする機能はありますか?配列もJSONですhttp://stackoverflow.com/questions/1334479/json-decoding-in-c – kirilloid

答えて

2

私は、WebメソッドにAjaxのポストを使用しての背後にあるあなたのC#コードに配列を渡します。あなたのコードに続いて

<input type-"checkbox" name="whatever" value="1" /> 
<input type-"checkbox" name="whatever" value="3" /> 
<input type-"checkbox" name="whatever" value="7" /> 

:あなたは、各チェックボックスを同じ値に「名前」プロパティを与えると

0

、あなたはカンマ区切りのリストを受け取ります

string values = Request.Form["whatever"] 
2

であることあなたのコードビヘイビアファイルにJS配列を渡すための完全に受け入れられる方法です。

runat = "server"とマークされた隠しフィールドのような入力コントロールがあることを確認し、コントロールの値をJS配列の.join( '、')の結果に設定してください。おそらく、最初に配列を作成したjavascript関数でこれを行うことができます。

var hiddenField = $get("<%= hdnFieldControl.ClientID %>"); 
hiddenField.value = jsArray.join(','); 

サーバー上では、コントロールの文字列値を再度分割して配列を再利用します。

var serverSideArray = hdnFieldControl.value.Split(new char[0]{','); 

このメソッドについての注意点は、文字列の配列になります。あなたが本当にint型の配列をしたい場合は、別のステップとして、それを変換することができます:

int[] myInts = Array.ConvertAll(serverSideArray, int.Parse); 
0

int[]approach &デシリアライズのこのタイプを使用してください。 OtheLwseあなたはそれを+あなたの要件が後で変更する場合は、より多くのJavaScriptコードを連結するためにjavascriptの世話をしています。

全体として JavaScriptコード生成/解析とC#コードをできるだけ混ぜないでください。そうしないと、デバッグするアプリケーションの獣で終わることがあります。

関連する問題