2013-09-02 2 views
1

ICollection을 제외하고 다른 모든 것이 내보기에 표시됩니다.ICollection이보기에 표시되지 않습니다. 4

테스 모델

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

내가 루프 중첩에서 items 얻을하려고하면

. 여전히 ICollection

enter image description here

만 표시 : 나는

enter image description here

가 함께되는 오류를 수정했습니다를 얻을. 그들은 저장되지 않을 수 있습니까?

+2

'항목'은 기본 유형이 아닙니다. DisplayFor가 어떻게 해석해야한다고 상상합니까? 그것은 무엇을 보여야 하는가? 프레임 워크는 많은 도움이 될 수 있지만 마법은 없습니다. –

+0

@Mvision 항목은 다른 모든 것을 표시합니다. 그러면이 ICollection에 액세스하는 방법은 무엇입니까? – rogerthat

+1

@Mvision LOL. 프레임 워크에 Magic Nuget 패키지를 설치하는 것이 훨씬 쉽습니다. 어쩌면 MVC 5 – rogerthat

답변

1

나는 DisplayFor이 그렇게 작동하지 않는다고 생각합니다. 각 개별 항목을 반복해야합니다.

@foreach (var tes in Model) { 
    ... 
    @foreach (var item in tes.items) { 
    Html.DisplayFor(m => m.item_name) 
    ... 
    } 
} 
+0

아. 시험합시다 – rogerthat

+0

틀렸어. 문제는'item' 속성에서 얻을 수 없다는 것입니다. – rogerthat

관련 문제