2014-02-05 110 views
1

我有兩個表TxtCommentLogin在單視圖中顯示模型中的多個表

我在Login表中顯示圖片網址和TxtComment表中的評論,其中用戶名TxtComment等於Login中的用戶名。

我正在使用Db第一種方法使用entityframework。

如何將不同表格中的這些列連接到一個公共視圖?我使用ViewBag。我得到了一個結果。

控制器

public ActionResult Item(int id) 
{ 
    FoodContext db = new FoodContext(); 

    ViewBag.FoodItems = db.FoodItems.Where(row => row.itemid == id); 

    ViewBag.TxtComments = (from user in db.TxtComments 
          from ff in db.Logins 
          where ff.username == user.username 
          select new { imgurl = ff.imgurl, txtcmt = user.txtcmt }); 

    return View(); 

} 

查看

@for(var item in ViewBag.TxtComments) 
{ 
    <div>@item</div> 
} 

結果是{imgurl=http:/sdfsdf,txtcmt=sfsdfsdf}

我需要每個項目單獨。我怎麼能夠?我試着用@item.imgurl,它說錯誤。查看包是否更好?如果沒有,請用強類型視圖幫助我解決這個問題。

+0

不要使用'ViewBag',創建一個'ViewModel' 。 –

回答

3

的自己ViewModel而不是把模型中的ViewBag內創建。

視圖模型:

public class ViewModel 
{ 
    public List<ImageComment> ImageComments { get; set; } 

    public ViewModel() 
    { 
     ImageComments = new List<ImageComment>(); 
    } 
} 

public class ImageComment 
{ 
    public string ImageUrl { get; set; } 
    public string Comment { get; set; } 
} 

控制器動作:

public ViewResult Item(int id) 
{ 
    FoodContext db = new FoodContext(); 

    List<ImageComment> comments = (from user in db.TxtComments 
            from ff in db.Logins 
            where ff.username == user.username 
            select new ImageComment 
            { 
             ImageUrl = ff.imgurl, 
             Comment = user.txtcmt 
            }).ToList(); 

    ViewModel vm = new ViewModel{ ImageComments = comments };  
    return View("MyView", vm); 
} 

查看:

@model ViewModel 

@{ 
    ViewBag.Title = "Comments"; 
} 

@foreach(ImageComment comment in Model.ImageComments) 
{ 
    <p>@comment.Comment</p> 
    <img src="@comment.ImageUrl" alt="img" /> 
} 
+0

你可以請發佈視圖(演示)也 – user3274324

+0

更新我的答案包括視圖。 –

+0

view getting error.Sir – user3274324

相關問題