ICollection未在视图mvc 4中显示

时间:2013-09-02 15:43:26

标签: jquery asp.net-mvc-4

除了ICollection之外,我的视图中显示的所有其他内容。

Tes Model

    public class Tes
    {
        [Key]
        public int tID { get; set; }

        public int FromUserID { get; set; }//user logged in
        public int ToUserId { get; set; } //user to be sent
        public int itemTId { get; set; } //single item

        public virtual ICollection<Item> items { get; set; }

    }

项目模型

    public class Item
    {

    public int UserId { get; set; }

    public int ID { get; set; }
    public string item_name { get; set; }
    public string item_description { get; set; }
    public string item_code { get; set; }
    public DateTime dateAdded { get; set; }
    public int catId { get; set; }
    public int?  isSelected { get; set; }
    public int isQuick { get; set; }

    public virtual ICollection<Tes> tes{ get; set; }

    }

public class ItemDBContext : DbContext
{
    public ItemDBContext()
        : base("name=ItemDbContext")
    { }

    public DbSet <Item> Items { get; set; }
    public DbSet<Category> Cats { get; set; }
    public DbSet<Tes> Tes{ get; set; }


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Tes>().HasMany(e => e.items).WithMany(e => e.tes);
    }
}

控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Tes take)
    {
        if (ModelState.IsValid)
        {

            db.Trades.Add(take);

            //do I add ICollection seperately?

            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(take);
    }

查看

     @foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.tID)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ToUserId)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.itemTId)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.items)//not displaying?
    </td>

Ajax POST

        var take= {
    FromUserID: uid,
    ToUserID: TradeeUid,
    itemTradedForId: TradeeItemId,
    items: ids,
    __RequestVerificationToken: $("[name='__RequestVerificationToken']").val()
}

//jQuery.ajaxSettings.traditional = true

 $.ajax({
    type: "POST",
    url: "/Trade/Create",
    data: take
    //dataType:JSON
    //contentType: "application/json; charset=utf-8",
    //data: JSON.stringify(take)

  });

这就是我得到的。

ICollection not displaying

如果我尝试从嵌套的for循环中获取items。我收到错误

enter image description here

修正了:

enter image description here

但仍然没有显示ICollection。可能是他们没有被存储?

1 个答案:

答案 0 :(得分:1)

我认为DisplayFor不是那样的。您必须遍历每个单独的项目。

@foreach (var tes in Model) {
  ...
  @foreach (var item in tes.items) {
    Html.DisplayFor(m => m.item_name)
    ...
  }
}
相关问题