所以我有一個視圖,需要幾個不同的對象和對象列表傳入和傳出,我創建了一個viewmodel。我的視圖模型看起來像這樣MVC 4模型返回null
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數據爲空,我不完全確定如何使其按照我喜歡的方式工作。
這是生成的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循環下面
@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 2013-05-13 14:31:01
是的,我更新了我的文章 – aw04 2013-05-13 14:38:04
添加控制器的回發方法 – 2013-05-13 14:59:07