2013-11-09 3 views
0

Может ли кто-нибудь предоставить мне хороший пример контроллера для проверки флажков для модели?Проведение модели с проверенными флажками в MVC4

например. Как я в контроллере хватаю только проверенные элементы, а также их соответствующее значение выпадающего списка?

Взгляд

<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? 
} 

ответ

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 поля ваши выпадающие и сделать их соответствуют CheckBox значение:

<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> 
+0

Спасибо Диме. Это было действительно просто. Я немного обновил код, не могли бы вы также показать мне, как я получаю соответствующее значение выпадающего списка для тех, которые проверяются в контроллере? – totalnoob

+0

Обновленный ответ. В принципе, вы можете обратиться к коллекции 'Request.Form', чтобы получить соответствующие выпадающие списки. – Dima

Смежные вопросы