簡體   English   中英

我的聯接未在視圖中返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM