2016-02-10 7 views
0

В MVC приложении я присоединился к нескольким таблицам и возвращают его от Controller до View, как показано ниже:Связывание Model.ID к списку Checkbox и пост Model.X, Model.Y и т.д. свойств в контроллер

| EmployeeID | ControlID | DoorAddress | DoorID | DoorName | 
------------------------------------------------------------ 
| 921  |  1  |  1  | 101 | Door 1 | 
| 921  |  1  |  2  | 102 | Door 2 | 
| 921  |  1  |  3  | 103 | Door 3 | 
| 921  |  1  |  4  | 104 | Door 4 | 
------------------------------------------------------------ 

контроллер:

public ActionResult Edit(int? id) 
{ 
    // Create and execute raw SQL query. 
    string query = "SELECT a.EmployeeID, a.ControlID, a.DoorAddress, t.DoorID, t.DoorName FROM TEmpAccess AS a " + 
        "INNER JOIN TDoor AS t ON a.ControlID = t.ControlID and a.DoorAddress = t.DoorAddress where EmployeeID = " + id.ToString(); 
    IEnumerable<EmpAccessViewModel> data = db.Database.SqlQuery<EmpAccessViewModel>(query); 

    return View(data.ToList()); 
} 

Я хочу связать DoorName значения (дверь 1, 2 дверные, дверные 3, дверные 4) в checkbox list и позволить пользователю выбрать их. После этого я хочу передать соответствующие EmployeeID, ControlID, DoorAddress, DoorID значения выбранной двери на Controller. Например, если пользователь выбирает дверь 1 и дверь 3, то я передать эти значения ниже к Controller:

| EmployeeID | ControlID | DoorAddress | DoorID | 
------------------------------------------------- 
| 921  |  1  |  1  | 101 | 
| 921  |  1  |  3  | 103 | 
------------------------------------------------- 

С помощью синтаксиса razor или javascript в представлении, как я могу это сделать? Заранее спасибо.

+0

Используйте вид модели в том числе 'свойство BOOL IsSelected' так что вы можете связать его с флажком. См. [Этот ответ] (http://stackoverflow.com/questions/29542107/pass-list-of-checkboxes-into-view-and-pull-out-ienumerable/29554416#29554416) для примера –

+0

@StephenMuecke Спасибо, но в данных ответах нет списка флажков. Не могли бы вы привести пример относительно моего вопроса (я вернул данный список выше, используя sql-запрос), имея список флажков? – hexadecimal

+0

Конечно! Изучите его - каждый элемент в коллекции имеет связанный с ним флажок. Когда форма отправлена, вы можете запросить возвращенную коллекцию и получить выбранные элементы, используя '.Where (m => m.IsSelected)' –

ответ

1

Если вы хотите установить флажок в начале таблицы в представлении, который должен быть передан контроллеру, и каждая строка уникально идентифицирована DoorID, вы можете попробовать что-то вроде этого.

в View

<table> 
@foreach (var item in Model) 
     { 
      <tr> 
       <td><input type="checkbox" value="@item.DoorID" name="doorid" /></td> 
       <td>@item.EmployeeID</td> 
       <td>@item.ControlID</td> 
       <td>@item.DoorName</td> 
      </tr> 
     } 
</table> 

В контроллере

public void ControllerName(int[] doorid) 
{ 
     foreach(var item in doorid) 

      //do something 
} 
+0

Большое спасибо за ваш ответ ... Мне удалось опубликовать выбранные идентификаторы, но я не могу связать этот флажок, хотя я использовал свойство @Seylected @ Stephen's в модели. Есть идеи? – hexadecimal

+0

С другой стороны, я пробовал, но не могу проголосовать, поскольку у меня недостаточно репутации :( – hexadecimal

+0

Надеюсь, это было что-то полезное .. – Vini

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

  • Нет связанных вопросов^_^