BeginCollectionItem 不能绑定部分值

本文关键字:绑定部 不能 BeginCollectionItem | 更新日期: 2023-09-27 18:37:05

我正在编辑可变长度列表,ASP.NET MVC 2 样式教程,但我无法将视图模型的值绑定到我的创建视图

型:

 public class WebPages
{
    [Key]
    public int WebPagesId { get; set; }
    public String DomainName { get; set; }
    [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
    public DateTime DomainStart { get; set; }
    [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
    public DateTime DomainExp { get; set; }
    public String DomainEmails { get; set; }
    public String DomainUsers { get; set; }
    public String DomainPasswords { get; set; }
}
}

视图模型:

public class WebPagesViewModel
{
    [Key]
    public int Id { get; set; }
    public String DomainName { get; set; }
    public class Domain
    {
        public String DomainEmails { get; set; }
        public String DomainUsers { get; set; }
        public String DomainPasswords { get; set; } 
    }
    public List<Domain> Domains { get; set; }
}
}

创建获取控制器

 public ActionResult Create(WebPages model)
    {
     var ejemdata =  new List<WebPagesViewModel.Domain>
        {
            new WebPagesViewModel.Domain
            {
                DomainEmails = "email@gmail.com",
                DomainUsers = "Testuser",
                DomainPasswords = "testpassword"
            }
        };
        var vm = new WebPagesViewModel
        {
            Clients = new SelectList(db.ClientsList, "ClientsId", "ClientsName"),
          Domains = ejemdata
        };

        return View(vm);
    }

创建视图:

 @foreach (var item in Model.Domains)
        {
            { Html.RenderPartial("_WebPagesPartial", item);} 
        }

部分:

 @using xxx.Models.ViewModels
 @model WebPagesViewModel.Domain
@using HtmlHelpers.BeginCollectionItem
 <h2>Partial View</h2>
 <div>
@using (Html.BeginCollectionItem("Domains"))
{
        Html.EditorFor(x => x.DomainPasswords);
        Html.EditorFor(x => x.DomainUsers);
        Html.EditorFor(x => x.DomainEmails);
}

我使用断点调试,控制器从我的ejemdata获取值,并将其传递到我的创建视图以foreach

在查看照片中接收数据

因此,当页面加载时,它仅从部分加载标签,但不显示 BeginCollectionItem 方法中的任何内容,我在 HTML 上得到这个

.HTML:

<input type="hidden" name="Domains.index" autocomplete="off" value="28f4e8e7-cde3-44fe-a739-b4c8acb15ec2">

BeginCollectionItem 不能绑定部分值

您使用

Html.EditorFor(x => x.DomainPasswords);

只是调用该方法,但不输出其结果。您需要将其更改为

@Html.EditorFor(x => x.DomainPasswords)

(其他 2 个 HtmlHelper 也是如此)