簡體   English   中英

@ Html.HiddenFor不會將值從CheckBoxFor傳遞給控制器

[英]@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"因此,如果選中該復選框,則將同時發布truefalse (但僅綁定true ),並且如果未選中,則僅發布false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM