c# - MVC3 Razor View,在另一个项目中使用实体模型

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

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

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

我得到这个错误: enter image description here

我将 System.Data.Entity 添加到我的引用中。

Controller :

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" />

最佳答案

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

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

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

你需要配置section groups如下

<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 的引用?

关于c# - MVC3 Razor View,在另一个项目中使用实体模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6804691/

相关文章:

c# - 在 C# 中将 int 转换为 System.Numerics.BigInteger/从 System.Numerics.BigInteger

entity-framework - 无法保存多对多关系

.net - Entity Framework 5 : Table-per-Type mapping with concrete base class

c# - 内容对话框不显示 WINUI3

c# - 在 Visual Studio 2015 中连接到数据库

c# - List<T> FirstOrDefault() 性能不佳 - 在这种情况下可以使用字典吗?

c# - aspx 文件中的 If 语句

c# - VS 2017,获取您正在调试 ASP.NET C# 项目的发布版本

c# - 网页和服务器之间的安全通信

c# - 如何根据实体输入参数过滤 IEnumerable