【问题标题】:Cannot access Linq when using Razor without MVC在没有 MVC 的情况下使用 Razor 时无法访问 Linq
【发布时间】:2012-03-13 13:08:03
【问题描述】:

有没有人在没有 MVC 的情况下使用过 Razor。我正在使用从 http://www.fidelitydesign.net/?p=208 构建的模板引擎,但我不能使用 Razor 代码中的任何 linq 查询,例如

<div>
    @Model.Person.First().Firstname
</div>

这会引发错误:

System.Collections.Generic.List' 不包含定义 对于 'First' 并且没有扩展方法 'First' 接受第一个参数 可以找到“System.Collections.Generic.List”类型的(是 您缺少 using 指令或程序集引用

对于此示例,Model 包含下面的 Person 列表

public class Person
{
    public string FirstName { get; set; }
}

【问题讨论】:

  • 我假设您确实尝试过@using System.Linq
  • 是的,我已经调试并检查了是否添加了汇编
  • 语法错误,Model是列表,所以First需要在Model上调用。
  • @BrokenGlass:作为补充说明:如果您在更多视图中使用 Linq,则将其放在 &lt;system.web&gt;&lt;compilation&gt;&lt;assemblies&gt;&lt;add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/&gt; 下的 Web.Config 文件中更容易不要忘记重启 Visual Studio :)

标签: asp.net-mvc linq razor


【解决方案1】:

Model是列表,所以需要在模型上First而不是PersonFirst返回Person类的实例:

<div>
    @Model.First().Firstname
</div>

你需要:

  • 在视图顶部添加@using System.Data.Linq
  • 或者如果您在所有视图上都需要它,请将 &lt;add namespace="System.Data.Linq" /&gt; 添加到您的 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>

【讨论】:

  • 我已经更新了问题,说“模型”包含一个“人员”列表。还有一个比这更深层次的问题。不过还是谢谢。
  • 不要忘记重新启动 Visual Studio 以获得 Linq 上的 Intellisense 支持。
  • 没有 Views 文件夹,这是一个“类库”项目,html 标记来自数据库,请查看 link 以获取示例项目
  • 所以将我提供的部分放入实际运行此代码的应用程序的 app.config 中,或者将其放在视图顶部
  • 我应该提到我在最后一条评论之前尝试过这个,但没有运气。
猜你喜欢
  • 2011-06-16
  • 1970-01-01
  • 2018-03-02
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
  • 2021-05-15
  • 1970-01-01
相关资源
最近更新 更多