2016-01-12 50 views
0

我是MVC中的新人,嘗試我的第一個項目。MVC視圖沒有得到模型的ID

我有一個數據庫與幾個表,我想爲每個表創建控制器。

我從具有ID和DiscNum的光盤開始,它們都是int類型的。

這是我創建的控制器:

public class DiscController : Controller 
{ 
    // GET: Disc 
    public ActionResult Index() 
    { 
     var entities = new MovieDBEntities(); 

     return View(entities.Disc); 
    } 

    // GET: Disc/Details/5 
    public ActionResult Details(int id) 
    { 
     return View(); 
    } 

    // GET: Disc/Create 
    public ActionResult Create() 
    { 
     return View(); 
    } 

    // POST: Disc/Create 
    [HttpPost] 
    public ActionResult Create(FormCollection collection) 
    { 
     try 
     { 
      // TODO: Add insert logic here 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

    // GET: Disc/Edit/5 
    public ActionResult Edit(int id) 
    { 
     return View(); 
    } 

    // POST: Disc/Edit/5 
    [HttpPost] 
    public ActionResult Edit(int id, FormCollection collection) 
    { 
     try 
     { 
      // TODO: Add update logic here 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

    // GET: Disc/Delete/5 
    public ActionResult Delete(int id) 
    { 
     return View(); 
    } 

    // POST: Disc/Delete/5 
    [HttpPost] 
    public ActionResult Delete(int id, FormCollection collection) 
    { 
     try 
     { 
      // TODO: Add delete logic here 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 
} 

這是我Index.cshtml文件:

@model IEnumerable<Movies.Models.Disc> 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<table class="table"> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.DiscNum) 
     </th> 
     <th></th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.DiscNum) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | 
      @Html.ActionLink("Details", "Details", new { id=item.ID }) | 
      @Html.ActionLink("Delete", "Delete", new { id=item.ID }) 
     </td> 
    </tr> 
} 

</table> 

一切都很好,但細節來看,所有其他的意見確定。

這是我的詳細信息視圖:

@model Movies.Models.Disc 

@{ 
    ViewBag.Title = "Details"; 
} 

<h2>Details</h2> 

<div> 
    <h4>Disc</h4> 
    <hr /> 
    <dl class="dl-horizontal"> 
     <dt> 
      @Html.DisplayNameFor(model => model.DiscNum) 
     </dt> 

     <dd> 
      @Html.DisplayFor(model => model.DiscNum) 
     </dd> 

    </dl> 
</div> 
<p> 
    @Html.ActionLink("Edit", "Edit", new { id = Model.ID }) | 
    @Html.ActionLink("Back to List", "Index") 
</p> 

當我嘗試打開它,我得到一個錯誤,指出信息:System.NullReferenceException。 錯誤發生在以下內容中:@ Html.ActionLink(「Edit」,「Edit」,new {id = Model.ID})|

模型可能爲null。

我該如何解決?

有人能幫我一下嗎?

預先感謝您!

+0

在沒有你的GET方法你有沒有通過一個模型視圖,以便'Model'總是空的,因此引用' Model.ID'引發一個異常。並且不要在你的POST方法中使用'FormCollection' - 回發你的模型。 –

回答

1

在獲取詳細查看您需要的模型傳遞給視圖

[HttpGet] 
public ActionResult Details(int id) 
{ 
    var model = GetDetailsById(id); 
    return View(model); 
}