【问题标题】:MVC 3 Razor View, use Entitiy Model in another projectMVC 3 Razor View,在另一个项目中使用实体模型
【发布时间】:2011-07-24 03:04:54
【问题描述】:

我正在学习 MVC 3、Razor 和 EF Model First。

我正在处理一个项目,我在与主 Web 项目不同的项目中定义了 EF 模型。我正在尝试在视图中使用该模型访问数据。

我收到此错误:

我将 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>

感谢您的帮助。

更新

发生此错误是因为我的 web.config 中的程序集引用丢失。它已添加到我在项目中的引用中,但未添加到 web.config 中。 IIS 几乎在我的错误消息中告诉我这一点。我应该读得更好。很抱歉浪费了任何人的时间。我在 web.config 中添加了以下内容,现在效果很好:

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

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-mvc-3 razor


    【解决方案1】:

    将命名空间添加到Web.Config 是不够的。当您将它们添加到 Web.Config 时,它们在您的视图中充当 using 指令。

    因此,您的 MVC 项目中需要 Reference System.Data.Entity。 (在你的MVC项目中右键References,然后点击Add Reference等等...)

    此外,如果您想将 using 指令添加到您的 Razor 视图中,您需要按如下方式添加它

    您需要按如下方式配置节组

    <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 项目中添加了对 EntityFramework 的引用?

    【讨论】:

    • 它已经添加到参考文献中,不过我会尝试您的其他建议。目前是 system.web
    • 如果我尝试这个,我会得到另一个错误:无法识别的配置部分 system.web.webPages.razor。但它会在 web.config 中自动完成,所以它必须是正确的位置。
    • @m4tt1mus 已编辑答案。尝试将sectionGroup 添加到Web.Config 并在您的MVC 项目中引用EntityFramework
    • 嗯... System.Data.Entity 是我很确定的实体框架。
    • @m4tt1mus 查看this answer 在 Razor 中全局配置命名空间
    【解决方案2】:

    发生此错误是因为我的 web.config 中的程序集引用丢失。它已添加到我在项目中的引用中,但未添加到 web.config 中。 IIS 几乎在我的错误消息中告诉我这一点。我应该读得更好。很抱歉浪费了任何人的时间。我在 web.config 中添加了以下内容,现在效果很好:

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

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 2019-04-22
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多