为什么我不能在ASP.NET MVC 2中使用强类型视图的Html辅助方法?

时间:2010-11-08 18:54:25

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

我用模型创建了一个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>" %>

5 个答案:

答案 0 :(得分:5)

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

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

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

希望这有帮助

修改

this link可能有助于解决此问题

答案 1 :(得分:3)

我一直都会遇到这个错误,我不知道是什么原因造成的。它必须与Visual Studio无法正确解析Page / UserControl指令并随后不加载inherits属性中定义的正确类型。

除了丢失intellisense之外,它并没有真正影响应用程序,当你打开aspx视图文件并构建你的解决方案时,你在visual studio输出中也会遇到很多错误(你的解决方案仍然无需担心)。

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

HTHS,
查尔斯

聚苯乙烯。我也在使用resharper,但我不确定是否应该责备。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我遇到了同样的问题,也在无知的时刻删除了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>

答案 4 :(得分:0)

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