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 回答