2009-06-17 14 views
0

私はthisに従いましたが、デフォルトのmodelbinderはサーバ側で配列をnullにしました。ASP.NET MVCでHTMLラジオボタン配列を使用

HTML:

Question 1: 
<input name="list[0]" type="radio" value="1000" />No 
<input name="list[0]" type="radio" value="1001" />Yes 
Question 2: 
<input name="list[1]" type="radio" value="1002" />No 
... 

コントローラのアクション:

public ActionResult Anamnesis(string[] list) 
{ 

私は([0]不足しているリスト)のみ二 "いいえ" を選択した場合、その後DefaultModelBinderはにそれを変換することは不可能ですアレイ。

前もって太もも!コメントに基づいて再フォーマット

更新#1

、ありがとうございました!

更新#2

だけ取り払わ:すべてのリスト項目後、それが動作しますこのように隠し入力を作成しました。しかし、それは疑いもなく醜いです。

Question 1: 
<input name="list[0]" type="radio" value="1000" />No 
<input name="list[0]" type="radio" value="1001" />Yes 
<input type="hidden" name="list[0]"/> 
Question 2: 
<input name="list[1]" type="radio" value="1002" />No 
<input type="hidden" name="list[1]"/> 
... 

それは非常重要です注文:隠された値は、無線がオフになっているときにのみ送信します。 ASP.NET MVCヘルパーのアイデアです。 (Btwでは、この動作を保存するためにHtml.RadioButtonは使用できません)

+1

配列はC#でゼロになります。始めるだろう。 –

+0

True!最初の要素を選択するとうまくいきますが、他のオプション(list [2])を選択すると失敗します。既定のバインダーには、0から始まる配列が必要です。しかし、これはラジオボタンでは不可能です...リクエストを作成するためにjQueryに切り替える必要があるかもしれません。 – boj

+0

これらがラジオボタンである場合、つまり相互に排他的(どちらか一方を選択する)であれば、同じ名前を付ける必要があります。それ以外の場合は、名前が異なる場合、それらは別々の "セット"として扱われ、//両方を選択することも可能です! (選択を解除する方法はありません) - Mike – Funka

答えて

0

あなたのアップデート#2はあなたの問題を解決するようです。あなたのアップデート#2はまた、チェックされていないときに使用されるデフォルト値(999など)を供給するためにこの方法を使用することもできる点で面白いです。

this articleに基づいており、隠された入力も使用している、おそらく別の同様の方法があります。

Question 1: 
<input name="list.Index" type="hidden" value="0" /> 
<input name="list[0]" type="radio" value="1000" />No 
<input name="list[0]" type="radio" value="1001" />Yes 
Question 2: 
<input name="list.Index" type="hidden" value="1" /> 
<input name="list[1]" type="radio" value="1000" />No 
<input name="list[1]" type="radio" value="1001" />Yes 

私はこのことをお勧め理由は、である:アイデアは、あなたが以前の形式で不足している選択がドロップされるように、後続のすべての選択を起こす事態を避けるために、お使いの無線機ごとにインデックスを作成することができるということです0,1,2などを使用するのではなく、固有のIDで特定の質問に回答を関連付けることができます。私がリンクした記事は、これを行う方法の例を示します。

幸運を祈る!
-Mike

+0

クリーナーソリューションを使用して、私の、thanx! – boj

-1

ラジオボタンの名前属性はlist [n]ではなく、listでなければなりません。

+0

これは質問の可能な回答のリストです。最初の質問の回答はリスト[0]、2番目の質問の回答リスト[1]などですインデックスを作成するのではなく単に「リスト」を書くと、ユーザーは1つの答え_per_ページを選択できます。 – boj

+0

次に、チェックボックス – eulerfx

関連する問題