[英]My join doesn't return the value at the view
我的控制器中有以下代碼:
public ActionResult Index()
{
var announcementCat = (from p in db.announcements
join f in db.announcementsCategories
on p.kind equals f.ann_kind
select new
{
kindtext = f.ann_kindtext,
}).ToList()
.Select(x => new announcements()
{
kind = x.ann_kindtext
});
return View(db.announcements.OrderByDescending(announcements=> announcements.Pubdate).ToList());
}
這就是我在視圖中嘗試的
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Pubdate)
</td>
<td>
@ViewBag.announcementCat
</td>
<td>
@Html.DisplayFor(modelItem => item.title)
</td>
</tr>
}
</table>
我正在嘗試的是帶來announcement
類別,而不是id
。 但是我的代碼沒有返回任何內容,也沒有任何錯誤。 它帶來除announcement
類別(即kindtext
字段)以外的所有數據。
編輯我的第一個模型
public class announcements
{
[Key]
[Display(Name = "ID")]
public int ann_ID { get; set; }
[Display(Name = "Date")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime Pubdate { get; set; }
[Display(Name = "Category")]
public int kind { get; set; }
[Display(Name = "Title")]
public String title { get; set; }
}
}
我的第二個模特
public class announcementsCategories
{
[Key]
[Display(Name = "category ID")]
public int ann_kind { get; set; }
[Display(Name = "category description")]
public String ann_kindtext { get; set; }
}
因為你已經錯過了在返回announcementCat
到視圖。 您應該這樣返回聯接結果:
ViewBag.announcementCatcode = announcementCat;
然后在View
:
@foreach (var item in ((List<string>)ViewBag.announcementCatcode))
{
@item
}
首先創建一個視圖模型來表示您想要在視圖中顯示的內容
public class AnouncementVM
{
public string Title { get; set; }
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}")]
public DateTime Date { get; set; }
public string Category { get; set; }
}
然后在GET方法中,將查詢投影到視圖模型中
public ActionResult Index()
{
var data = (from p in db.announcements
join f in db.announcementsCategories
on p.ann_ID equals f.ann_kind // note I think this needs to be - on p.kind equals f.ann_kind
select new AnouncementVM
{
Title = p.title,
Date = p.Pubdate,
Category = f.ann_kindtext
}).ToList();
return View(data.OrderByDescending(x => x.Date);
}
並認為
@model IEnumerable<AnouncementVM>
....
@foreach(var item in Model)
{
<tr>
<td>@Html.DisplayFor(m => item.Date)</td>
<td>@Html.DisplayFor(m => item.Category)</td>
<td>@Html.DisplayFor(m => item.Title)</td>
</tr>
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.