0

モデルのチェックボックスを処理するためのコントローラーの良い例を教えてもらえますか?

例えば。コントローラーで、チェックされたアイテムとそれに対応するドロップダウンボックスの値のみを取得するにはどうすればよいですか?

景色

 <form>
      <table>
           <tr>
                <td>
                    <input type="checkbox" name="something" value="12345" checked="true" />
                    <select>
                         <option value="1">1</option>
                         <option value="2">2</option>
                         <option value="3">3</option>
                    </select>
                </td>
           </tr>
           <tr>
                <td>
                     <input type="checkbox" name="something" value="54321" checked="false" />
                     <select>
                         <option value="1">1</option>
                         <option value="2">2</option>
                         <option value="3">3</option>
                     </select>
                </td>
           </tr>
           <tr>
                <td>
                     <input type="checkbox" name="something" value="11111" checked="false" />
                     <select>
                         <option value="1">1</option>
                         <option value="2">2</option>
                         <option value="3">3</option>
                     </select>
                </td>
           </tr>
      </table>
      <input type="submit" />
 </form>

モデル

 public class FormCollection 
 {
   // how would this look?
 }

コントローラー

 public ActionResult Sort(FormCollection model)
 {
   FormCollection _model = new FormCollection();
   // iterate through model to get only values that are checked
   // add them to _model
   // how would this look?
 } 
4

1 に答える 1

1

まず、クラスFormCollectionは既にフレームワークに存在します: http://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection(v=vs.108).aspxしたがって、送信されたデータを結合する場合モデルには、モデル クラスに別の名前を使用します。

次に、チェックボックス リストが にバインドされるIEnumerable<string>ため、アクションは次のようになります。

public ActionResult Sort(IEnumerable<string> something)
{
  // iterates only checked items
  foreach(var item in something)
  {
    var correspondingDropdownValue = Request.Form[item]
  }
}

nameこれには、ドロップダウンにフィールドを追加し、それらをチェックボックスの値に対応させる必要があります。

<input type="checkbox" name="something" value="11111" checked="false" />
<select name="11111">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>
于 2013-11-09T18:31:46.993 に答える