2011-07-24 32 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