私は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は使用できません)
配列はC#でゼロになります。始めるだろう。 –
True!最初の要素を選択するとうまくいきますが、他のオプション(list [2])を選択すると失敗します。既定のバインダーには、0から始まる配列が必要です。しかし、これはラジオボタンでは不可能です...リクエストを作成するためにjQueryに切り替える必要があるかもしれません。 – boj
これらがラジオボタンである場合、つまり相互に排他的(どちらか一方を選択する)であれば、同じ名前を付ける必要があります。それ以外の場合は、名前が異なる場合、それらは別々の "セット"として扱われ、//両方を選択することも可能です! (選択を解除する方法はありません) - Mike – Funka