在 Razor 视图中使用 System.Data.Linq

2024-02-03

我可能对这里发生的事情有一个根本性的误解,但我在我的 razor 视图中循环遍历 LinqToSQL 类时遇到问题:

<h3>Owners</h3>
@foreach (var ThisOwner in Prop.PropertyOwnerships.Where(p=p.bIsOwner.Value==true))
{
<div class="ODEditEntry">
...

我收到以下错误:

编译器错误消息:CS0012:类型“System.Data.Linq.EntitySet`1”是在未引用的程序集中定义的。您必须添加对程序集“System.Data.Linq,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”的引用。

我尝试将 @using System.Data.Linq 放在 cshtml 文件的顶部,但它告诉我 System.Data 命名空间中不存在 Linq。这显然不是真的,是的,我的项目中确实有 system.data.linq 作为参考。

这里有什么想法吗?是否需要进口?我可以不在我的 razor 视图中执行 Linq 风格的操作吗?这看起来……很奇怪?


您需要通过添加将命名空间导入到您的视图中@using System.Data.Linq在您视图的顶部。但是,如果您希望它出现在所有视图中,那么您需要添加<add namespace="System.Data.Linq" />到 Views 文件夹中的 web.config:

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <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.Data.Linq" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

尽管与您的问题无关,但您确实应该尝试将此逻辑移出视图并移入控制器中,但这将使事情更容易调试,并且意味着您的演示文稿与业务逻辑分离。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Razor 视图中使用 System.Data.Linq 的相关文章

随机推荐