【问题标题】:BeginCollectionItem can not bind partial valuesBeginCollectionItem 不能绑定部分值
【发布时间】:2016-03-01 20:37:47
【问题描述】:

我正在做 Editing a variable length list, ASP.NET MVC 2-style 教程,但我无法将 ViewModel 的值绑定到我的 Create View

型号:

 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; }
}
}

创建GetController

 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

Receiving data in View photo

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

HTML:

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

【问题讨论】:

    标签: c# .net asp.net-mvc collections


    【解决方案1】:

    你使用的

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

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

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

    (其他 2 个 HtmlHelper 也是如此)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 2012-01-23
      • 2013-04-01
      • 2013-09-12
      相关资源
      最近更新 更多