2014-03-30 34 views
1

我需要一些關於此問題的建議/幫助。我一直在互聯網上狩獵,我感到有點困惑。查看詳情在MVC +加入表格

基本上我有一個視圖 - 列出我所有電影的索引。有一個詳細信息視圖,顯示有關該電影的其他信息。我遇到的問題是當我查看細節視圖時,它沒有顯示我的一些值。我明白爲什麼,因爲我有一個強類型的模型,但我需要一些關於如何解決這個問題的幫助。

型號

public class Film 
    { 
     public int FilmID { get; set; } 

     [StringLength(60, MinimumLength = 1)] 
     [Required] 
     public string Title { get; set; } 
     .............. 

     public Owner owners { get; set; } 
    } 

控制器

public ActionResult Details(int id = 0) 
    { 
     Film film = db.Films.Find(id); 

     if (film == null) 
     { 
      return HttpNotFound(); 
     } 

     return View(film); 
    } 

查看

@model SwapShop.Models.Film 
    @{ 
     ViewBag.Title = "Details"; 
    } 

    <h2>Details</h2> 

    <fieldset> 
    <legend>Film</legend> 
    <div class="display-label"> 
     @Html.DisplayNameFor(model => model.Title): 
    </div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.Title) 
    </div> 

    <div class="display-label"> 
     @Html.DisplayNameFor(model => model.owners.Owner_FirstName) 
    </div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.owners.Owner_FirstName) 
    </div> 
    </fieldset> 

正在顯示正確的記錄,但對於owner_FirstName值爲空。我需要加入控制器中的所有者表嗎?

+0

在這一行上放一個斷點:'return View(film)'並檢查'film'的值。如果'film.owners.Owner_FirstName'爲空,那麼您需要查看'db.Films.Find()'方法是否正確地查詢數據庫以查找「所有者」屬性。 –

+0

感謝您回覆如此迅速。將值寫入屏幕的最佳方式是什麼? – user2672720

+0

我設法檢查電影對象,當我查看電影標題正確顯示到控制檯。當我查看films.owners.Owner_FirstName時,我收到了nullrefexception。 – user2672720

回答

1

如果您使用的是實體框架,當您獲得電影時,可能無法獲取像owners這樣的導航屬性。試試這個怎麼樣:

Film film = db.Films.Include(f=> f.owners).SingleOrDefault(f => f.FilmId == id); 
+0

你是一個明星。非常感謝你在這方面的時間。我認爲這是與該陳述有關的,但是正在爲寫什麼而掙扎。再次感謝。 – user2672720