뷰에는 각각 체크 박스가있는 항목 목록이 있습니다. 폼의 목적은 상자를 체크 한 다음 목록을 db로 리턴하는 것입니다. 숨겨진 시드와 체크 박스 값으로 채워진 ViewModel의 PickList 모델을 보길 원하지만 폼은 항상 PickList를 null로 제출합니다. 모델 발생할 수 있습니다 @Html.DisplayFor
를 사용MVC 폼은 null 모델을 다시 컨트롤러로 반환합니다.
@model Inventory.ViewModels.ExtractionViewModel
<div class="col-md-4">
<button class="btn btn-primary" type="submit" form="pick-list-form">Update Pick List</button>
</div>
@using (Html.BeginForm("UpdatePickList", "Extraction", FormMethod.Post, new { @id = "pick-list-form" }))
{
<table class="table">
<tr>
<th>
Seed Reference
</th>
<th>Extracted?</th>
</tr>
@foreach (var item in Model.PickList)
{
<tr>
<td>
@Html.HiddenFor(modelItem => item.ExtractionId)
@Html.HiddenFor(modelItem => item.SeedId)
@Html.DisplayFor(modelItem => item.SeedId)
</td>
<td>
@Html.CheckBoxFor(modelItem => item.IsExtracted)
</td>
</tr>
}
</table>
}
View Model
public class ExtractionViewModel
{
public ExtractionDTO Extraction{ get; set; }
public List<PickListDTO> PickList { get; set; }
}
Pick list model
public class PickListDTO
{
public int ExtractionId { get; set; }
public int SeedId { get; set; }
public bool IsExtracted { get; set; }
}
버튼이 양식 외부로 전송되는 이유는 무엇입니까? –
제출 버튼을 다른 위치에두고 form = ""이 허용하도록되어 있습니다. 그것은 제출하므로 작동한다고 가정합니다. – BattlFrog
@ G-Town - foreach를 일반 for 루프로 전환하면 트릭이 나았습니다. 감사. – BattlFrog