그래서 여러 개의 다른 객체와 객체 목록을 전달해야하고 뷰 모델을 생성해야한다는 견해가 있습니다. 내 뷰 모델이MVC 4 model 돌아오다
public class EditUserViewModel
{
public ManageUsersViewModel ManageUsersViewModel { get; set; }
public IEnumerable<StateModel> StateModel { get; set; }
}
나는이
public class StateModel
{
public bool IsChecked { get; set; }
public States States { get; set; }
public UsersInStates UsersInStates { get; set; }
}
처럼 보이는 StateModel입니다에 문제가 부분처럼 보이는 난 내보기에서이
[Table("States")]
public class States
{
[Key]
public int StateId { get; set; }
public string State { get; set; }
}
[Table("UsersInStates")]
public class UsersInStates
{
[Key, Column(Order = 1)]
public int UserId { get; set; }
[Key, Column(Order = 2)]
public int StateId { get; set; }
public string LicenseNumber { get; set; }
}
을 포함 어느 정도 상태를 반복하고 UsersInStates에 대한 사용자 입력을 시도합니다. 이것이 내가 그것을 성취하려는 방법이지만, 전체 StateModel은 null로 돌아옵니다. StateModel.States에 데이터가 있고 UsersInStates가보기에 들어 가지 않습니다. 이것은 내보기에 보이는 것입니다.
@foreach (var state in Model.StateModel)
{
@Html.HiddenFor(m => state)
<tr>
<td>
@Html.CheckBoxFor(m => state.IsChecked)
</td>
<td>
@Html.Label(state.States.State)
</td>
<td>
@Html.EditorFor(m => state.UsersInStates.LicenseNumber)
</td>
</tr>
}
조언을 주시면 감사하겠습니다. 모든 것이 표시되고 ManageUsersViewModel 파트가 제대로 작동합니다. 컨트롤러에 다시 들어오는 StateModel 데이터가 null이고이 작업을 원하는 방식으로 수행하는 방법을 정확히 모르겠습니다.
좋아 내가 루프에 대한 사용이 문제를 해결하기 위해 :
이
은 생성 된 HTML 테이블의 시작과 이<table style="margin-left:auto; margin-right:auto; text-align:center">
<input id="state" name="state" type="hidden" value="WebSiteNew.Models.StateModel" /> <tr>
<td>
<input data-val="true" data-val-required="The IsChecked field is required." id="state_IsChecked" name="state.IsChecked" type="checkbox" value="true" /> <input name="state.IsChecked" type="hidden" value="false" />
</td>
<td>
<label for="Alabama">Alabama</label>
</td>
<td>
<input class="text-box single-line" id="state_UsersInStates_LicenseNumber" name="state.UsersInStates.LicenseNumber" type="text" value="" />
</td>
</tr>
대답의 요청에 따라 첫 번째 행에 대한 모습입니다 아래의 답변에 나열된 두 참조에 설명되어 있습니다
@for (int i = 0; i < Model.StateModel.Count(); i++)
{
<tr>
<td>
@Html.HiddenFor(m => m.StateModel[i].States.StateId)
@Html.HiddenFor(m => m.StateModel[i].States.State)
@Html.CheckBoxFor(m => m.StateModel[i].IsChecked)
</td>
<td>
@Html.Label(Model.StateModel[i].States.State)
</td>
<td>
@Html.EditorFor(m => m.StateModel[i].UsersInStates.LicenseNumber)
</td>
</tr>
}
또한이 주저하는 사람에게 보내는 메모는 IEnu 내 EditUsersViewModel에서 IList로 색인 생성이 가능합니다.
생성 된 HTML이 어떻게 생겼는지 보여줄 수 있습니까? – CorrugatedAir
예 내 게시물을 업데이트했습니다. – aw04
포스트 백 컨트롤러 메서드를 추가하십시오. –