2011-07-24 31 views
1

我正在學習MVC 3,Razor和EF Model First的過程。MVC 3 Razor查看,在另一個項目中使用Entitiy模型

我有一個項目我正在從哪裏定義EF模型在一個單獨的項目從主Web項目。我試圖在視圖中使用該模型訪問數據。

我得到這個錯誤: enter image description here

我加入了System.Data.Entity的我引用。

控制器:

public ActionResult ListRole() 
{ 
    AuthDbContainer db = new AuthDbContainer(); 
    List<Role> roles = db.Roles.ToList(); 

    return View(roles); 
} 

查看:

@model IEnumerable<WebSecurity.Role> 
@{ 
    ViewBag.Title = "Role List"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<!DOCTYPE html> 
<html> 
<head> 
    <title>ListRole</title> 
</head> 
<body> 
    <p> 
     @Html.ActionLink("Create New", "Create") 
    </p> 
    <table> 
     <tr> 
      <th> 
       desc 
      </th> 
      <th> 
       createDate 
      </th> 
      <th> 
      </th> 
     </tr> 
     @foreach (var item in Model) 
     { 
      <tr> 
       <td> 
        @Html.DisplayFor(modelItem => item.desc) 
       </td> 
       <td> 
        @Html.DisplayFor(modelItem => item.createDate) 
       </td> 
       <td> 
        @Html.ActionLink("Edit", "Edit", new { id = item.roleName }) | 
        @Html.ActionLink("Details", "Details", new { id = item.roleName }) | 
        @Html.ActionLink("Delete", "Delete", new { id = item.roleName }) 
       </td> 
      </tr> 
     } 
    </table> 
</body> 
</html> 

感謝您的任何幫助。發生

UPDATE

這個錯誤,因爲在我的web.config裝配基準失蹤。它被添加到我在項目中的引用中,但不在web.config中。 IIS幾乎告訴我,在我的錯誤信息。我應該更好地閱讀它。對不起浪費任何人時間。添加以下到我的web.config和它的作品非常好:

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

回答

3

發生此錯誤是因爲我的web.config中的程序集引用丟失。它被添加到我在項目中的引用中,但不在web.config中。 IIS幾乎告訴我,在我的錯誤信息。我應該更好地閱讀它。對不起浪費任何人時間。我添加了以下內容到我的web.config中,它現在效果很好:

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
3

添加命名空間的Web.Config是不夠的。當您將它們添加到Web.Config時,它們將在您的視圖中充當using指令。

因此,您需要在您的MVC項目中使用ReferenceSystem.Data.Entity。 (右擊References在你的MVC項目,然後單擊Add Reference等等...)

此外,如果你想using指令添加到您的剃鬚刀的意見,你需要如下

您需要配置添加它部分分組如下

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
</sectionGroup> 

然後

<system.web.webPages.razor> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages" /> 
     <add namespace="System.Data.Entity" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

你添加到參考在你的MVC項目中?

+0

它已被添加到引用,我會嘗試你的其他建議。目前它不是system.web – m4tt1mus

+0

如果我嘗試這個我得到另一個錯誤:無法識別的配置節system.web.webPages.razor。但它在web.config中自動完成,因此它必須是正確的位置。 – m4tt1mus

+0

@ m4tt1mus編輯答案。嘗試在您的MVC項目中將'sectionGroup'添加到'Web.Config'並引用'EntityFramework'。 – Eranga