【问题标题】:Why can't I use Html helper methods with strongly-typed views in ASP.NET MVC 2?为什么我不能在 ASP.NET MVC 2 中使用具有强类型视图的 Html 辅助方法?
【发布时间】:2011-05-06 20:00:26
【问题描述】:

我创建了一个带有模型的 ASP.NET MVC 2 项目。然后我创建了一个视图,并选择它为创建的模型进行强类型化。我也用局部视图做了同样的事情。在任何一种情况下,由于某种原因,我都会收到错误消息:“每当我尝试使用 ASP.NET MVC 2 为模型创建表单元素提供的 Html 帮助器方法时,无法解析符号‘Html’。我有 Visual Studio 2010 和 ASP .NET MVC 2 已安装。这是以前见过的吗?如果是,是否有解决方案可以解决此问题?

我的模型看起来像:

public namespace MyNamespace { public class MyModel { public string MyProperty { get; set; } } }

我的常规视图的第一行是:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MyNamespace.MyModel>" %>

我的部分视图的第一行是:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyNamespace.MyModel>" %>

【问题讨论】:

  • 您是否正在使用 resharper?
  • 是的,但这甚至发生在我安装 ReSharper 之前。
  • 您找到解决此问题的方法了吗?

标签: html asp.net-mvc-2 views helper


【解决方案1】:

我一直收到这个错误,我不太清楚是什么原因造成的。这一定与 Visual Studio 未能正确解析 Page / UserControl 指令并随后未加载在继承属性中定义的正确类型有关。

除了失去智能感知之外,它不会真正影响应用程序,并且当您打开 aspx 视图文件并构建解决方案时,您还会在 Visual Studio 输出中遇到很多错误(您的解决方案仍然应该不用担心构建)。

我可以通过弄乱Page / UserControl 指令来让错误消失,这会强制Visual Studio 重新解析它。例如。在inherits 属性内的任意位置放置一个随机空格,然后将其删除。

HTH,
查尔斯

附言。我也在使用 resharper,但我不确定这是否是罪魁祸首。

【讨论】:

    【解决方案2】:

    是的,这在我身上也发生过几次。如果应用程序正确加载并且视图加载了我怀疑它可能是您的 ReSharper Build 的对象。尝试更新您的 Resharper 版本,看看它是否能识别您的模型。

    【讨论】:

    • 就像我在上面的评论中所说的,它发生在我安装 ReSharper 之前。
    • 在我在另一台计算机上尝试之前,我一直在使用非强类型的局部视图。今天我尝试使用强类型视图构建和运行一个应用程序(忽略 Html 帮助程序已被读取)并让它编译。当我导航到该站点时,我得到了一个不同的错误。似乎它无法以某种方式找到模型......不过这可能是我的错误。
    【解决方案3】:

    我想我找到了解决您问题的方法(但我不确定它是否是暂时的)

    当您创建一个新的 asp mvc 项目时,它包含 2 个 web.config 文件。一个在项目根目录,一个在 Views 目录。

    我认为视图上的那个不是必需的,所以我将其排除在外。第二天 resharper 停止识别 Html 辅助方法。我再次添加它并重新加载解决方案,所有错误都消失了。

    希望对你有帮助

    编辑

    this link 可能会帮助解决这个问题

    【讨论】:

    • 旧 Q/A 但仍然相关。另一个原因是,如果您使用了未在 View web.config 中正确定义的自定义视图引擎。底线。确保您的两个 web.config 文件都没有关于剃须刀或视图引擎的错误。通常会解决问题。
    【解决方案4】:

    我也遇到了同样的问题,一时也把web.config删掉了……

    将下面的 web.config 合并到 web 应用程序根目录中的 web.config 也可以解决问题。它再次正常工作,但您仍然只有一个 web.config 文件。

      <system.web>
         <pages
              validateRequest="false"
              pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
              pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
              userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
          <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
          </namespaces>
            <controls>
               <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
            </controls>
        </pages>
      </system.web>
    

    【讨论】:

      【解决方案5】:

      这个错误发生在我身上,因为我错误地移动了“Views”文件夹中的 web.config。 此文件包含 System.Web.Mvc 的包含。希望这会有所帮助。
      问候

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-23
        • 1970-01-01
        • 2011-01-05
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        相关资源
        最近更新 更多