如果之前已詢問過,請致歉;有一百萬種方式來表達它,因此尋找答案已證明很困難。MVC3 - 帶有複雜類型列表的Viewmodel
我有以下屬性的視圖模型:
public class AssignSoftwareLicenseViewModel
{
public int LicenseId { get; set; }
public ICollection<SelectableDeviceViewModel> Devices { get; set; }
}
SelectableDeviceViewModel的簡化版本是這樣的:
public class SelectableDeviceViewModel
{
public int DeviceInstanceId { get; set; }
public bool IsSelected { get; set; }
public string Name { get; set; }
}
在我看來,我試圖顯示可編輯複選框列表對於Devices屬性,在輸入表單中。 目前,我的看法是這樣的:
@using (Html.BeginForm())
{
@Html.HiddenFor(x => Model.LicenseId)
<table>
<tr>
<th>Name</th>
<th></th>
</tr>
@foreach (SelectableDeviceViewModel device in Model.Devices)
{
@Html.HiddenFor(x => device.DeviceInstanceId)
<tr>
<td>@Html.CheckBoxFor(x => device.IsSelected)</td>
<td>@device.Name</td>
</tr>
}
</table>
<input type="submit" value="Assign" />
}
的問題是,當模型被調回控制器,設備爲空。
我的假設是,這是因爲即使我正在編輯它的內容,Devices屬性永遠不會明確包含在窗體中。我試圖用HiddenFor來包含它,但是這只是導致模型有一個空列表而不是null。
任何想法我在這裏做錯了嗎?
你能告訴我們你的控制器代碼是填充數據模型嗎? – nikeaa 2012-07-26 21:26:31
+1爲覆蓋此區域最優雅的問題。相信我,我們花了最近2個小時尋找這個問題! – 2012-10-11 12:28:56