[英]@Html.HiddenFor does not pass value from CheckBoxFor to controller
我試圖從@ Html.CheckBoxFor傳遞給控制器,但它沒有傳遞真實值。 我有一個ViewModel包含另一個ViewModel的IList,其中另一個ViewModel包含沒有被傳遞的bool isSelected。 代碼看起來像這樣
public class PackageItemsViewModel
{
public IList<ItemsViewModel> items{ get; set; }
}
public class ItemsViewModel
{
[Key]
public int Id { get; set; }
[Required]
public string Type { get; set; }
public bool isSelected { get; set; }
}
並在視野中
@for (var i = 0; i < Model.items.Count; i++)
{
<tr>
@Html.HiddenFor(x => x.devices[i].Id)
<td>
@Html.HiddenFor(x => x.items[i].isSelected)
@Html.CheckBoxFor(x => x.items[i].isSelected)
</td>
</tr>
}
DefaultModelBinder
僅將其找到的第一個值與匹配屬性綁定。 在這種情況下,您的@Html.HiddenFor(x => x.items[i].isSelected)
正在呈現發送給視圖的初始值,並且由於它位於復選框之前,因此您將永遠只綁定到該初始值(您的復選框被忽略)。
只需刪除@Html.HiddenFor(x => x.items[i].isSelected)
,即可正確綁定該值。
請注意, CheckBoxFor()
方法同時生成一個復選框(具有value="true"
和一個隱藏的輸入,具有value="false"
因此,如果選中該復選框,則將同時發布true
和false
(但僅綁定true
),並且如果未選中,則僅發布false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.