Asp.net-Mvc
將對象列表綁定到表單
我有一類
Signature對象:public class Signature { public int SignatureID { get; set; } public int FormID { get; set; } public string Title { get; set; } public string Email { get; set; } [Display(Name = "Signed Date:")] public DateTime? Date { get; set; } }我有一個
Form.cs具有虛擬簽名列表的類public virtual List<Signature> Signatures { get; set; }在我的控制器中,我通過以下方式填充列表:
form.Signatures = repository.Signatures.Where(s => s.FormID == form.FormID).ToList();在我的表單視圖中,我顯示了相關簽名的列表:
@foreach (var signature in Model.Signatures) { <div class="text-center"> <label asp-for="@signature.Title"></label> <input asp-for="@signature.Title" /> <label asp-for="@signature.Email"></label> <input asp-for="@signature.Email" /> <label asp-for="@signature.Date"></label> <input disabled asp-for="@signature.Date"> </div> }但是,我不知道如何在表單的 POST 方法上更新關聯的簽名。例如,如果我更改
Form像中。在這種情況下,form.Signatures為空。如何確保
<List>Signature在 POST 上更新與表單關聯的項目的更改?
使用
for循環生成元素,因為它會為模型綁定器使用的屬性名稱添加索引以綁定到文章上的列表,這不適用於foreach:@for (int i=0; i< Model.Signatures.Count; i++) { <div class="text-center"> <label asp-for="@Model.Signatures[i].Title"></label> <input asp-for="@Model.Signatures[i].Title" /> <label asp-for="@Model.Signatures[i].Email"></label> <input asp-for="@Model.Signatures[i].Email" /> <label asp-for="@Model.Signatures[i].Date"></label> <input disabled asp-for="@Model.Signatures[i].Date"> </div> }現在元素將使用類似的名稱呈現
Signatures[0].Title,Signatures[1].Title並且模型綁定器可以將其綁定到 post 上的模型。希望能幫助到你。