【问题标题】:MVC3 Views unable to find added referenced classMVC3 视图无法找到添加的引用类
【发布时间】:2011-07-10 13:04:04
【问题描述】:

我的观点是在我的参考文献之一中查找类时遇到问题。 此引用指向在项目之外构建的 dll。

视图总是报错:

找不到类型或命名空间名称“公司”(您是 缺少 using 指令或程序集引用)

这里是控制器。没有问题。

using Company.Entities;

public ActionResult Find()
{
    Person test = Person.SelectByADDistinguishedName("L*", false);
    return View(test);
}

这里是视图。错误发生在@Model 行。

@model Company.Entities.Person

@{
    ViewBag.Title = "Bob";
}

<h2>Find</h2>

我的视图/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="Company.Entities" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

我已经检查过类似one 的帖子,但无济于事。

这是屏幕上的消息

Line 25:     using System.Web.Mvc.Html;
Line 26:     using System.Web.Routing;
Line 27:     using Company.Entities;
Line 28:     
Line 29:     


Source File: c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET

文件\root\49c9c7db\1f9dd5c8\App_Web_find.cshtml.a8d08dba.xro6gxci.0.cs 线路:27

如果我去掉对程序集的任何提及(从 web.config 中删除 - 没有 @using 语句)。加载时我收到相同的错误消息,但针对此行

public class _Page_Views_Home_Find_cshtml : System.Web.Mvc.WebViewPage<Company.Entities.Person> {

【问题讨论】:

  • 您是否尝试关闭视图并重新打开它?还是在浏览视图时出现黄屏死机?
  • 编译不会因为视图中的语法错误而出错,您确定问题出在视图中吗?
  • 错误仍然是 - CS0246:找不到类型或命名空间名称“Dfait”(您是否缺少 using 指令或程序集引用?)。
  • 向票证添加了更多信息
  • 视图中不存在编译问题 -- 错误是指哪段代码?

标签: c# asp.net-mvc asp.net-mvc-3 reference


【解决方案1】:

经过一段时间的处理,我最终解决了它。

我必须在主 web.config 的程序集部分下添加程序集(不是视图下的那个)

web.config 示例。

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="Company, Version=2.0.31.0, Culture=neutral, PublicKeyToken=df9010405db60e6d"/>
  </assemblies>
</compilation>

感谢给我建议的人。

【讨论】:

  • 出于某种原因,即使这对我也不起作用。让我发疯的是,这样一个基本的事情似乎是不可能的。
【解决方案2】:

请务必检查您的视图目录以获取其他 web.config 文件。我似乎记得遇到过类似的问题,因为我没有更新正确的 web.config。 YMMV。

【讨论】:

  • 嗨哈尔,感谢您的快速响应,我已添加了我的视图/web.config 的内容。我已将命名空间添加到 views/web.config 和 /web.config 但没有运气。
【解决方案3】:

添加引用

在您使用控件之前,在 .cshtml 文件中起作用。示例:

@model IEnumerable<MyApp.Models.MyModel>
@using System.Web.UI.WebControls;

但是你可以把它放在 web.config 中的命名空间标签下。 这样,它对所有视图都是全局的。另外,不需要指定版本:

<namespaces>
        <add namespace="System.Web.UI.WebControls" />
</namespaces>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    相关资源
    最近更新 更多