2015-11-09 53 views
1

我是MVC中的新成員。我正在創建一個項目,我創建了一個模型類和上下文類,如果我在普通視圖中查看該記錄,那麼這個類很好用。 但如果我嘗試通過「Series_Name」獲取組中的數據並將其綁定到相同的模型類中,它會給出錯誤。這裏是我的代碼如何綁定mvc中的自定義模型類

下面是Model類和DBContextClass

[Table("tblvideo")] 
public class TVSerial 
{ 
    [Key] 
    public Int64 Video_ID { get; set; } 
    public string Series_Name { get; set; } 
    public string Season_No { get; set; } 
    public string Episode_No { get; set; } 
    public string Episode_Name { get; set; } 
    public string Time_Duration { get; set; } 
    public string File_Url_480p { get; set; } 
    public string File_Url_720p { get; set; } 
    public string Description { get; set; } 
    public bool Is_Active { get; set; } 
    public string Image_Url_Small { get; set; } 
    public string Image_Url_Big { get; set; } 
} 

public class TvSerialContext : DbContext 
{ 
    public DbSet<TVSerial> TvSerials { get; set; } 
} 

這裏是控制器類:

public class TvSerialController : Controller 
{ 
    public ActionResult ListAllTvSerial() 
    { 
     try 
     { 
      TvSerialContext tvContext = new TvSerialContext(); 
      List<TVSerial> tv = tvContext.TvSerials.ToList(); 
      return View(tv); 
     } 
     catch (Exception ex) 
     { 
      return Content(ex.Message); 
     } 
    } 
} 

上面的代碼工作正常,但如果我這樣做:

public ActionResult ListAllSeason(string serial) 
{ 
    try 
    { 
     TvSerialContext tvContext = new TvSerialContext(); 
     List<TVSerial> tv = tvContext.TvSerials.Where(tvs => tvs.Series_Name == serial).Distinct().ToList(); 
     return View(tv); 
    } 
    catch (Exception ex) 
    { 
     return Content(ex.Message); 
    } 
} 

它返回所有行,我只想從每個series_name和自定義字段「Series_Name,Seas on_No,Image_Url_Big「 我不知道如何做到這一點。 得到結果:enter image description here

預期的結果: - enter image description here

+0

你是什麼意思_it return all rows_?它只會返回'Series_Name == serial'的行。你有自定義比較器嗎? (如果不是'.Distinct()'子句不會做任何事情。最好猜測是你想要一個'.GroupBy()',但是從你的問題中不清楚你想要的輸出是什麼 –

+0

是啊其實我想groupBy Series_Name和只需要3個字段,但我不知道如何實現這個 –

+0

創建一個只有3個屬性的視圖模型,並使用'.GroupBy()'將視圖投影到你的視圖模型中,但是你調用了方法'ListAllSeason'暗示你想按季節分組嗎? –

回答

2

你可以通過創建一個視圖模型,並使用.GroupBy()條款

public class TVSerialVM 
{ 
    public string SeriesName { get; set; } 
    public string SeasonNo { get; set; } 
    public string ImageUrl { get; set; } 
} 

和查詢投射到您的視圖模型

List<TVSerialVM> model = tvContext.TvSerials.Where(t => t.Series_Name == serial) 
    .GroupBy(t => new { t.Series_Name, t.Season_No, t.Image_Url_Big }) 
    .Select(t => new TVSerialVM 
    { 
    SeriesName = t.Key.Series_Name, 
    SeasonNo = t.Key.Season_No, 
    ImageUrl = t.Key.Image_Url_Big 
    }).ToList(); 

旁註做到這一點:你的複製數據數據庫(季節號和圖片網址)。您應該考慮將圖片網址移至另一個與季節號碼有關係的表格。

+0

感謝您的幫助:) –

0

鮮明不能保證在自定義對象,它不知道什麼比較。我過去曾經使用過這種技術,使我的自定義對象與Distinct一起工作。

Creating a distinct list of custom type in C#

+0

其實我想.GroupBy Series_Name只想要3個領域,但我不知道如何實現這一點。 –