2014-10-08 54 views
0

我使用Visual Studio在ASP中創建了一個非常基本的Web應用程序,然後使用默認網站創建了'Employee'模型。該模型可以使用以下方式存儲在數據庫中:從ASP頁面列出模型,使用Visual Studio和C#

public class EmployeeDBContext : DbContext 
{ 
    public DbSet<Employee> Employees{ get; set; } 
} 

在Employee名稱空間中。當我爲此模型創建控制器時,將創建默認的創建,讀取,更新和刪除方法。還有一個索引頁面是在頁面第一次加載時顯示的,這個頁面顯示了當前在數據庫中的每個員工。對於Index.cshtml的代碼看起來是這樣的:

@model IEnumerable<AnotherWebApp.Models.Employee> 
@{ 
    ViewBag.Title = "Index"; 
} 

<h2>All Employee Options</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<p> 
    @Html.ActionLink("View All", "ViewAll") 
</p> 

<table class="table"> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.Name) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Role) 
     </th> 
     <th> 
      <b>Options</b> 
     </th> 
    </tr> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td> 
       @Html.DisplayFor(modelItem => item.Name) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Role) 
      </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> 

我所試圖做的是顯示在Index.cshtml一個基本的菜單,並鏈接到包含所有員工的表ViewAll頁面。問題在於「對象引用未設置爲對象的實例」。並且該頁面不顯示。我看不到爲什麼這個代碼在Index.cshtml上工作,但不會在ViewAll.cshtml上工作,任何人都有建議?這裏有一些鏈接指向一些教程:http://www.asp.net/mvc/tutorials/mvc-5/introduction/accessing-your-models-data-from-a-controller

感謝您的任何建議。

+0

你能告訴我們實際產生錯誤的代碼,並指出錯誤發生在哪一行上嗎? 'NullReferenceException'非常容易調試,只需在該行上放置一個斷點,並在調試時查看哪個對象爲'null'。 – David 2014-10-08 15:46:39

回答

0

只是爲了清除這個問題的東西來自EmployeeController.cs,其中與ViewAll頁面關聯的視圖被返回。當ViewAll功能是這樣的:

public ActionResult ViewAll() 
{ 
    return View(); 
} 

員工的名單無法如此訪問

@model IEnumerable<AnotherWebApp.Models.Employee> 

是null.The此功能的正確版本是:

public ActionResult ViewAll() 
    { 
     return View(db.Employees.ToList()); 
    } 

現在所有員工的列表都可以訪問,並且可以輕鬆顯示在ViewAll頁面上。 希望這對某人有所幫助,如果有人有問題請提問!